2015-09-26 60 views
-2

例如Python - 如何查找列表(或子列表)中存在的項目?

my_list = [1, 2, 3, 4, [5, 6], [7, 8]] 

我想找到,如果7是my_list?答案應該是真的,因爲它是最後一個子列表的一部分。有任何想法嗎?

+3

你嘗試過什麼?這看起來像一個簡單的問題,如果只有一個層次的嵌套。 –

+0

這對於一個級別來說很簡單,但如果級別是任意的呢? – Alexander

+0

是啊,阿南德,我呢,如果不使用額外的空間。我試圖找出是否有任何功能可以立即找到它,而不創建任何其他列表或使用額外的空間 – Nathan007

回答

0

如果mylist只是一個列表的列表,你可以使用itertools.chain.from_iterable()

import itertools 
mylist = [[1,2,3,4],[5,6],[7,8]] 
merged = list(itertools.chain.from_iterable(mylist)) 
7 in merged 

因爲我們有一個名單混合整數的列表,我們定義了一個自定義過濾器。這也可以在單個列表理解中完成,但我現在無法弄清楚。

mylist = [1,2,3,4,[5,6],[7,8]] 
merged = [] 
map(lambda l: merged.extend(l) if isinstance(l, list) else merged.append(l), [i for i in mylist]) 
7 in merged 

你也可以使用已棄用compiler.ast.flatten功能:

from compiler.ast import flatten 
merged = flatten(mylist) 
+0

感謝您的回答,但如果我們無法使用額外的空間呢? – Nathan007