python:如何在列表生成器表达式中获取列表长度?

时间:2016-10-11 08:48:54

标签: python

也许像这样(只是一个伪代码)

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

做这件事的pythonic方法是什么?

1 个答案:

答案 0 :(得分: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。

已编辑:更简单的方法,enumerate

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