关于python:检查for循环中的下一个元素

checking next element in for loop

假设我有这个数组:

1
arr = ["foo","bar","hey"]

我可以用这段代码打印"foo"字符串:

1
2
3
for word in arr:
    if word =="foo":
        print word

但我想检查下一个word,如果它等于"bar"那么它应该打印"foobar"

如何检查for循环中的下一个元素?


1
2
3
4
5
6
for i in range(len(arr)):
    if arr[i] =="foo":
        if arr[i+1] == 'bar':
            print arr[i] + arr[i+1]
        else:
            print arr[i]


列表中的项目可以通过其索引引用。 使用enumerate()方法接收迭代器以及每个列表元素(优选实例化和递增自己的C模式),您可以这样做:

1
2
3
4
5
arr = ["foo","bar","hey"]

for i, word in enumerate(arr):
    if word =="foo" and arr[i+1] == 'bar':
        print word

但是,当您到达列表末尾时,您将遇到需要处理的IndexError,或者您可以首先获取列表的长度(len())并确保i < max


您也可以使用zip:

1
2
3
for cur, next in zip(arr, arr[1:]):
    if nxt=='bar':
        print cur+nxt

但请记住,迭代次数只有两次,因为len(ar[1:])将为2


而不是检查下一个值,跟踪前一个:

1
2
3
4
5
6
7
last = None
for word in arr:
    if word =="foo":
        print word
    if last == 'foo' and word == 'bar':
        print 'foobar'
    last = word

跟踪你已经过去的东西比偷看更容易。