我如何可以提取列表下面給出具體的元組:如何從Python列表中提取特定的元組?
[[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]]
我想提取具有相同的X軸的元組,如:
[(1,4), (1,3), (1,2)]
,而(5,4)應被丟棄。 請幫幫我。
感謝
我如何可以提取列表下面給出具體的元組:如何從Python列表中提取特定的元組?
[[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]]
我想提取具有相同的X軸的元組,如:
[(1,4), (1,3), (1,2)]
,而(5,4)應被丟棄。 請幫幫我。
感謝
爲了展平的列表,你應該總是使用itertools.chain。在這種情況下,你必須套用嵌套chain
來創建元組的平面列表
>>> l=[[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]]
>>> [e for e in chain(*chain(*l)) if e[0] == 1]
[(1, 4), (1, 3), (1, 2)]
你應該實際使用'chain.from_iterable(l)'vs '鏈(* 1)'。更快。列表理解也比'chain(* l)'更快,但是'chain.from_iterable(l)'比LC更快。看時間。 – dawg 2013-02-23 18:10:18
那麼你添加相比,你previous question
所以,這個列表理解作品列表的附加深度:
>>> l=[[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]]
>>> def flat1(l): return [i for sub in l for i in sub]
...
>>> [t for t in flat1(flat1(l)) if t[0]==1]
[(1, 4), (1, 3), (1, 2)]
名單扁平列表的列表的理解方法如果大約與itertools.chain(*l)
相同的速度(略快)。
如果你想使用itertools來提高速度,你應該使用chain.from_iterable(l)
來代替。
這裏是時機:
import timeit
n=1000000
c1='''
def f1(l):
return [e for e in itertools.chain(*itertools.chain(*l)) if e[0] == 1]
l1=f1([[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]])
'''
c2='''
def f2(l):
def flat1(l): return [i for sub in l for i in sub]
return [t for t in flat1(flat1(l)) if t[0]==1]
l1=f2([[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]])
'''
c3='''
def f1(l):
flat1=itertools.chain.from_iterable
return [e for e in flat1(flat1(l)) if e[0] == 1]
l1=f1([[[(1, 4)]], [[(1, 3)], [(5, 4)]], [[(1, 2)]]])
'''
t1=timeit.timeit(stmt=c1,setup='import itertools',number=n)
t2=timeit.timeit(stmt=c2,number=n)
t3=timeit.timeit(stmt=c3,setup='import itertools',number=n)
print ' chain(*l):',t1,'seconds'
print ' list comprehension:',t2,'seconds'
print 'chain.from_iterable:',t3,'seconds'
打印:
chain(*l): 4.32919406891 seconds
list comprehension: 4.32601380348 seconds
chain.from_iterable: 3.14966917038 seconds
你試過了什麼?如果你表明自己已經完成了一些工作(這是因爲其他人更有可能試圖幫助你,並且因爲它可以顯示你的情況的更多細節,所以你會更有可能得到有用的答案。 – Blckknght 2013-02-23 06:39:26
這是不同於[你以前的問題](http://stackoverflow.com/q/15017497/78845)? – Johnsyweb 2013-02-23 06:41:40
@ Johnsyweb:我是新來的蟒蛇!試圖做一個我的項目!我需要提取這些我的進一步計算值列表在列表中讓我很害怕 – 2013-02-23 06:46:14