如何检查列表python中是否存在元素

时间:2014-10-02 18:51:44

标签: python list

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

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

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

3 个答案:

答案 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 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]

答案 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