我有一个列表的列表,对应于文件中的行,具有多个列。
[[col1, col2, col3], [elem1, elem2, elem3], [elem4, elem5, elem6]]
我想检查(例如)
elem3
是否在任何一个列表中,如果是,则进入该列表。(实际上我有一些需要检查的事物列表,因此这是一个可能包含elem3
,elem5
,elem7
等的列表)我有一个列表的列表,对应于文件中的行,具有多个列。
[[col1, col2, col3], [elem1, elem2, elem3], [elem4, elem5, elem6]]
elem3
是否在任何一个列表中,如果是,则进入该列表。(实际上我有一些需要检查的事物列表,因此这是一个可能包含elem3
,elem5
,elem7
等的列表)最短的方法是使用列表推导式,有时候列表推导式比简单的for循环更快。
你的列表:
list1 = [ ["col1", "col2", "col3"], ["elem1", "elem2", "elem3"], ["elem4", "elem5", "elem6"] ]
您需要查找的元素:
to_find = "col1"
def do_something(sub_list):
print (sub_list)
并且 列表解析
将找到您的元素并调用包含它的列表的函数:
[do_something(sub_list) for sub_list in list1 if to_find in sub_list]
def in_list(list_of_lists, item):
for list_ in list_of_lists:
if item in list_:
return list_
编辑:
这是一个递归版本,仅供参考:
def in_list(list_of_lists, item):
if not list_of_lists:
return None
if item in list_of_lists[0]:
return list_of_lists[0]
return in_list(list_of_lists[1:], item)
in
不会遍历列表,因此您只需要遍历 list_of_lists。它应该不会慢。 - Bobby Russellin
不会遍历列表”这是错误的。item in lst
是一个O(n)
操作,它会遍历lst
直到找到item
或者lst
被遍历完。 - dano我遇到了类似的问题。我有一个元组列表,其中包含瓦片编号:
data = [(0, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0),
(0, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0),
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)]
我需要找出特定瓦片编号在元组列表中的位置,因此:
to_find = 42
for i in range(len(data)):
if to_find in data[i]:
print (i, data[i].index(to_find))
break
list_of_lists = [['John', 'David'], ['Anna', 'Lisa']]
print(any('Lisa' in list for list in list_of_lists)) # True
print(any('Tom' in list for list in list_of_lists)) # False