如何访问for循环中的上一个/下一个元素?

2024-04-26 10:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用for循环遍历下一个或上一个元素时,是否有方法访问该元素(或tuple,或其他iterable元素)?

l = [1, 2, 3]
for item in l:
    if item == 2:
        get_previous(l, item)

Tags: 方法in元素forgetifiterableitem
3条回答
l = [1, 2, 3]
for i, item in enumerate(l):
    if item == 2:
        previous = l[i - 1]
        print(previous)

输出:

1

如果您要查找的项目是列表中的第一个项目,则此操作将环绕并返回列表中的最后一个项目。换句话说,在上面的代码中将第三行更改为if item == 1:,将导致它打印3

l = [1, 2, 3]

for i, j in zip(l, l[1:]):
    print(i, j)

表示为生成器函数:

def neighborhood(iterable):
    iterator = iter(iterable)
    prev_item = None
    current_item = next(iterator)  # throws StopIteration if empty.
    for next_item in iterator:
        yield (prev_item, current_item, next_item)
        prev_item = current_item
        current_item = next_item
    yield (prev_item, current_item, None)

用法:

for prev,item,next in neighborhood(l):
    print prev, item, next

相关问题 更多 >