基本上,您无法在Python中使用嵌套列表来完成此操作。但如果您正在寻找一种优化的方法,以下是一些方法:
使用简单的列表推导式,通过比较预期列表与子列表的前两个项:
>>> [sub for sub in totalist if sub[:2] == ['A', 'B']]
[['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'X', 'Y', 'Z']]
如果您想要索引,请使用
enumerate
:
>>> [ind for ind, sub in enumerate(totalist) if sub[:2] == ['A', 'B']]
[0, 1]
如果你处理大数据集,这里有一个在Numpy中相当优化的方法:
>>> import numpy as np
>>>
>>> totalist = np.array([['A','B','C','D','E'],
... ['A','B','X','Y','Z'],
... ['A','F','T','U','V'],
... ['A','F','M','N','O']])
>>> totalist[(totalist[:,:2]==['A', 'B']).all(axis=1)]
array([['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'X', 'Y', 'Z']],
dtype='|S1')
如果你不想使用循环,而且想要一种函数式的方式作为python中列表推导式的替代方案,那么你可以使用filter
函数。但是需要注意的是,filter
函数并不像列表推导式那样优化。
>>> list(filter(lambda x: x[:2]==['A', 'B'], totalist))
[['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'X', 'Y', 'Z']]