我有一列列表,它們對應於文件中的行,列有多列。如何檢查列表中是否存在元素python
[ [col1, col2, col3], [elem1, elem2, elem3], [elem4, elem5, elem6] ]
我要檢查,如果(例如)elem3
是在任何名單的,如果是,進入該名單。 (真我的事情,我需要檢查的列表,所以它的,可能包含elem3
,elem5
,elem7
列表....等)
我有一列列表,它們對應於文件中的行,列有多列。如何檢查列表中是否存在元素python
[ [col1, col2, col3], [elem1, elem2, elem3], [elem4, elem5, elem6] ]
我要檢查,如果(例如)elem3
是在任何名單的,如果是,進入該名單。 (真我的事情,我需要檢查的列表,所以它的,可能包含elem3
,elem5
,elem7
列表....等)
你可以做這樣的事情:
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)
是否有任何其他方式來做到這一點比循環所有列表?我有2000個列表,每個列表中有8個元素。 – user3264659 2014-10-02 18:58:01
這個算法的複雜性不是你應該擔心的。 'in'不會遍歷整個列表,所以你只需要遍歷list_of_lists。它應該不會很慢。 – 2014-10-02 19:00:04
@ user3264659:循環2000多個列表時出現什麼問題? – NPE 2014-10-02 19:00:10
最短的方法是使用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
會發現你的元素a nd帶有列表的呼叫功能:
[do_something(sub_list) for sub_list in list1 if to_find in sub_list]
請注意,這實際上並不能避免@BobbyRussell答案的嵌套循環問題。它只是隱藏它。列表解析與循環具有基本相同的性能。 – 2014-10-02 19:11:07
謝謝。我可能只需要使用熊貓來加入我在我的元素中找到... – user3264659 2014-10-03 22:24:28
究竟是什麼意思,「進入該列表」? – NPE 2014-10-02 18:52:51
只是返回它(我打算評估列表中的其他元素)。就好像我使用elem3作爲列表中的關鍵。不幸的是,該文件沒有設置爲字典。 – user3264659 2014-10-02 18:59:30
您的問題在這裏回答:http://stackoverflow.com/a/1156143/1628832 – karthikr 2014-10-02 19:00:53