2014-10-02 264 views
1

我有一列列表,它們對應於文件中的行,列有多列。如何檢查列表中是否存在元素python

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

我要檢查,如果(例如)elem3是在任何名單的,如果是,進入該名單。 (真我的事情,我需要檢查的列表,所以它的,可能包含elem3elem5elem7列表....等)

+0

究竟是什麼意思,「進入該列表」? – NPE 2014-10-02 18:52:51

+0

只是返回它(我打算評估列表中的其他元素)。就好像我使用elem3作爲列表中的關鍵。不幸的是,該文件沒有設置爲字典。 – user3264659 2014-10-02 18:59:30

+0

您的問題在這裏回答:http://stackoverflow.com/a/1156143/1628832 – karthikr 2014-10-02 19:00:53

回答

1

你可以做這樣的事情:

​​3210

編輯:

這裏是它赫克一個遞歸版本:

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) 
+0

是否有任何其他方式來做到這一點比循環所有列表?我有2000個列表,每個列表中有8個元素。 – user3264659 2014-10-02 18:58:01

+0

這個算法的複雜性不是你應該擔心的。 'in'不會遍歷整個列表,所以你只需要遍歷list_of_lists。它應該不會很慢。 – 2014-10-02 19:00:04

+0

@ user3264659:循環2000多個列表時出現什麼問題? – NPE 2014-10-02 19:00:10

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會發現你的元素a nd帶有列表的呼叫功能:

[do_something(sub_list) for sub_list in list1 if to_find in sub_list] 
+0

請注意,這實際上並不能避免@BobbyRussell答案的嵌套循環問題。它只是隱藏它。列表解析與循環具有基本相同的性能。 – 2014-10-02 19:11:07

+0

謝謝。我可能只需要使用熊貓來加入我在我的元素中找到... – user3264659 2014-10-03 22:24:28

相關問題