如何遍历列表中的所有项,但不包括最后一项?

219 投票
6 回答
306397 浏览
提问于 2025-04-15 11:51

我想用一个for循环来遍历一个列表,但不想包括最后一个项目。我想检查每个项目和它后面的那个项目。有没有办法不使用索引来做到这一点?

6 个回答

23

如果你想要逐个获取序列中的所有元素,可以使用这个方法(pairwise函数来自itertools模块的示例)。

from itertools import tee, izip, chain

def pairwise(seq):
    a,b = tee(seq)
    b.next()
    return izip(a,b)

for current_item, next_item in pairwise(y):
    if compare(current_item, next_item):
        # do what you have to do

如果你需要把最后一个值和某个特定的值进行比较,可以把那个特定的值加到序列的末尾。

for current, next_item in pairwise(chain(y, [None])):
61

比较当前项和下一个项的最简单方法是:

for i, j in zip(a, a[1:]):
     # compare i (the current) to j (the following)
431
for x in y[:-1]

如果y是一个生成器,那么上面的做法就不行。

撰写回答