2015-12-26 167 views
-1

下一個元素比方說,我有這樣的數組:檢查for循環

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

我可以打印"foo"字符串與此代碼:

for word in arr: 
    if word == "foo": 
     print word 

,但我想也查了下word如果等於"bar"那麼它應該打印"foobar"

如何檢查for循環中的下一個元素?

+0

爲什麼不使用'elif'或'else' ? –

+0

您可以通過查看[2395160](http://stackoverflow.com/questions/2395160/what-is-the-correct-syntax-for-else-if)得到您要找的答案 – cynicaljoy

+1

@EliKorvigo:I認爲OP只是想訪問當前和下一個元素。 –

回答

3
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] 
+3

我相信python的更多方法是使用'enumerate()'而不是基於列表的'len'進行迭代。 – zayora

+0

是的,使用'enumerate()''''''' –

2

列表中的項目可以通過它們的索引來引用。使用enumerate()方法接收與每個列表元素(最好實例化和增加自己的模式C)一起迭代器,你可以這樣做是這樣的:

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

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

但是,當你到年底該列表中,您將遇到需要處理的IndexError,或者您可以首先獲取列表的長度(len())並確保i < max

0

而不是檢查下一個值,跟蹤以前

last = None 
for word in arr: 
    if word == "foo": 
     print word 
    if last == 'foo' and word == 'bar': 
     print 'foobar' 
    last = word 

跟蹤你已經通過什麼比提前偷看容易。

0

你也可以做到這一點拉鍊:

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

但是記住,迭代次數將只有兩個,因爲len(ar[1:])將2