2016-10-11 87 views
-1

也許像這樣(只是一個僞代碼)python:如何獲得列表生成器表達式中的列表長度?

li = [1,2,3,4,5,6] 
a = [d for d in li if self.length<3] 
print a 
[1,2] 

什麼是Python的方式做那件事?

+0

長度?我認爲你的意思是價值? –

+1

什麼是「自我」? – ozgur

+0

您無法引用列表理解中正在生成的列表。爲什麼不只是'a = li [:2]'? –

回答

3

您可以使用itertools.count()來跟蹤你有多少元素使用:

from itertools import count 

li = [1,2,3,4,5,6] 
c = count(1) # initialize to 1 
a = [d for d in li if next(c) < 3] # everytime you add an element 
print (a)       # in the comprehension `c` is incremented 

用於跟蹤添加到列表中的元素,列表的,因此它的長度,得出:

[1, 2] 
如預期與長度

2.

EDITED:更簡單的方法,用enumerate

a = [d for idx, d in enumerate(li) if idx < 2] 
+1

請使用'next()'函數而不是直接調用'__next__'方法。 'next(c)'在Python 2和3中更具可讀性和可移植性。 –

+1

此外,爲什麼在使用'enumerate()'時使用'count()'? 「李」與計數之間有直接關係。 –

+1

謝謝你的提示,其實際上並沒有跨越我的想法,'列舉'真正簡單和首選的方式。 –