gpt4 book ai didi

python - 大多数 Pythonic for/enumerate 循环?

转载 作者:太空狗 更新时间:2023-10-30 00:25:12 25 4
gpt4 key购买 nike

我有一个循环条件:

for count, item in enumerate(contents):

但只想使用内容的前 10 个元素。最pythonic的方法是什么?

做一个:

if count == 10: break

似乎有点非 Pythonic。有没有更好的办法?

最佳答案

使用切片(切片表示法)

for count, item in enumerate(contents[:10]):

如果您正在遍历生成器,或者您的列表中的项目很大并且您不希望创建新列表的开销(像切片那样),您可以使用 islice来自 itertools模块:

for count, item in enumerate(itertools.islice(contents, 10)):

无论哪种方式,我建议您以稳健的方式执行此操作,这意味着将功能包装在一个函数中(因为人们想要使用此类功能 - 实际上,这就是名称函数的原因)

import itertools

def enum_iter_slice(collection, slice):
return enumerate(itertools.islice(collection, slice))

例子:

>>> enum_iter_slice(xrange(100), 10)
<enumerate object at 0x00000000025595A0>
>>> list(enum_iter_slice(xrange(100), 10))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9)]
>>> for idx, item in enum_iter_slice(xrange(100), 10):
print idx, item

0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9

如果您使用 enumerate 和您的 count 变量只是为了检查项目索引(这样您就可以使用您的方法退出/中断第 10 个项目的循环。)您不需要 enumerate , 并且只使用 itertools.islice()全部作为您的功能。

for item in itertools.islice(contents, 10):

关于python - 大多数 Pythonic for/enumerate 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com