我有一个列表,列表对应于文件中的行,有多列。
[ [col1, col2, col3], [elem1, elem2, elem3], [elem4, elem5, elem6] ]
我想检查(例如)elem3
是否在任何列表中,如果是,请进入该列表。 (实际上我有一个我需要检查的事项列表,所以它是一个可能包含elem3
,elem5
,elem7
等等的列表。
答案 0 :(得分:1)
您可以这样做:
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)
答案 1 :(得分:1)
最短的方法是使用list comprehensions
,list comprehensions
有时比简单for loop
更快
你的清单:
list1 = [ ["col1", "col2", "col3"], ["elem1", "elem2", "elem3"], ["elem4", "elem5", "elem6"] ]
要查找的元素:
to_find = "col1"
你的功能"进入该列表":
def do_something(sub_list):
print (sub_list)
和list comprehension
将找到你的元素和调用函数以及包含它的列表:
[do_something(sub_list) for sub_list in list1 if to_find in sub_list]
答案 2 :(得分:0)
我遇到了类似的问题。我有一个元组列表,瓦片编号:
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