gpt4 book ai didi

python - 从输入中生成每个第 n 个值的列表

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:05 26 4
gpt4 key购买 nike

我有以下代码:

return [p.to_dict() for p in points]

我将其更改为仅每第 n 行打印一次:

n = 100
count = 0

output = []

for p in points:
if (count % n == 0):
output.append(p.to_dict())
count += 1
return output

是否有更 pythonic 的方式来编写此代码以实现相同的结果?

最佳答案

使用 enumerate 并对修改后的列表推导中的索引取模,以过滤可被 n 整除的索引:

return [p.to_dict() for i,p in enumerate(points) if i % n == 0]

列表理解过滤很好,但在那种情况下,建议使用带有步骤的切片的 eduffy 答案更好,因为索引是直接计算的。仅当您无法预测索引时才使用过滤器部分。

进一步改进这个答案:使用 itertools.islice 会更好,这样就不会生成临时列表:

import itertools
return [p.to_dict() for p in itertools.islice(points,None,None,n)]

itertools.islice(points,None,None,n) 等同于 points[::n] 但执行惰性求值。

关于python - 从输入中生成每个第 n 个值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876865/

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