如何检查一个元素是否存在于Python中的列表列表中?

hmmo2u0o  于 2023-05-16  发布在  Python
关注(0)|答案(4)|浏览(136)

我有一个列表列表,这些列表对应于文件中的行,有多个列。

[[col1, col2, col3], [elem1, elem2, elem3], [elem4, elem5, elem6]]

我想检查(例如)elem3是否在任何列表中,如果是,进入该列表。(实际上我有一个需要检查的东西的列表,所以它可能包含elem3elem5elem7 ....等)

6qqygrtg

6qqygrtg1#

最短的方法是使用list comprehensionslist 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]
vxf3dgd4

vxf3dgd42#

你可以这样做:

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)
qyswt5oh

qyswt5oh3#

我也遇到过类似的问题。我有一个元组的列表,有瓷砖编号:

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)]

我需要找出一个特定的tile编号在元组列表中的位置,所以:

to_find = 42
for i in range(len(data)):
    if to_find in data[i]:
        print (i, data[i].index(to_find))
        break
vddsk6oq

vddsk6oq4#

您可以检查列表列表中是否存在某个值,如下所示:

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

相关问题