gpt4 book ai didi

python for循环,如何找到下一个值(对象)?

转载 作者:太空宇宙 更新时间:2023-11-03 12:13:59 24 4
gpt4 key购买 nike

您好,我正在尝试使用 for 循环通过相互减去查找每两个对象之间的差异。那么,如何在 for 循环中找到下一个值?

for entry in entries:
first = entry # Present value
last = ?????? # The last value how to say?
diff = last = first

最佳答案

应该注意的是,这些解决方案都不适用于生成器。为此,请参阅 Glenn Maynards 卓越的解决方案。

对小列表使用 zip:

 for current, last in zip(entries[1:], entries):
diff = current - last

这会生成列表的副本(以及来自列表的两个副本的元组列表),因此最好使用 itertools 来处理更大的列表

import itertools as it

items = it.izip(it.islice(entries, 1, None), entries)
for current, last in items:
diff = current - last

这将避免制作列表的副本制作元组列表。

另一种不复制的方法是

entry_iter = iter(entries)
entry_iter.next() # Throw away the first version
for i, entry in enumerate(entry_iter):
diff = entry - entries[i]

还有一种方式是:

for i in xrange(len(entries) - 1):
diff = entries[i+1] - entries[i]

这将创建一个迭代器,索引 entries 并将其推进一个。然后它使用 enumerate 来获取项目的索引。索引从 0 开始,因此指向前一个元素,因为我们循环了一个项目。

此外,正如 Tyler 在评论中指出的那样,如果您只想遍历差异,那么对于这样一个简单的问题,循环可能有点矫枉过正。

diffs = (current - last for current, last in 
it.izip(it.islice(entries, 1, None), entries))

关于python for循环,如何找到下一个值(对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929039/

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