当前位置:  开发笔记 > 编程语言 > 正文

计算满足if语句的元素并在Python中的列表理解中使用此计数器?

如何解决《计算满足if语句的元素并在Python中的列表理解中使用此计数器?》经验,为你挑选了1个好方法。

例如,我们有任务,在列表中选择前10个偶数.

这可以通过简单的for循环轻松完成:

i = 0
list_even = []
for x in range(30):
    if x % 2 == 0 and i < 10:
        list_even.append(x)
        i += 1
print(list_even)    # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] - correct!

怎么可能与列表理解相同?

我试图使用枚举,但它计算所有元素,不仅满足if语句,所以我不能使用枚举中的索引作为计数器.

list_even = [x for i, x in enumerate(range(30)) if x % 2 == 0 and i < 10]
print(list_even)    # [0, 2, 4, 6, 8] - incorrect!

我描述的任务只是示例 - 我正在写关于列表推导的文章,并希望了解这类任务的细节和一般解决方案.



1> Stefan Pochm..:

首先只过滤,然后只计算已经过滤的值?

>>> [x for i, x in enumerate(x for x in range(30) if x % 2 == 0) if i < 10]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

虽然islice可能是一个更好的方式来说你只想要前10个:

>>> list(itertools.islice((x for x in range(30) if x % 2 == 0), 10))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

如果时间/空间不是问题,或者只是获取完整列表的一部分:

>>> [x for x in range(30) if x % 2 == 0][:10]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有