下一個元素比方說,我有這樣的數組:檢查for循環
arr = ["foo","bar","hey"]
我可以打印"foo"
字符串與此代碼:
for word in arr:
if word == "foo":
print word
,但我想也查了下word
如果等於"bar"
那麼它應該打印"foobar"
如何檢查for循環中的下一個元素?
下一個元素比方說,我有這樣的數組:檢查for循環
arr = ["foo","bar","hey"]
我可以打印"foo"
字符串與此代碼:
for word in arr:
if word == "foo":
print word
,但我想也查了下word
如果等於"bar"
那麼它應該打印"foobar"
如何檢查for循環中的下一個元素?
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]
我相信python的更多方法是使用'enumerate()'而不是基於列表的'len'進行迭代。 – zayora
是的,使用'enumerate()''''''' –
列表中的項目可以通過它們的索引來引用。使用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
。
而不是檢查下一個值,跟蹤以前:
last = None
for word in arr:
if word == "foo":
print word
if last == 'foo' and word == 'bar':
print 'foobar'
last = word
跟蹤你已經通過什麼比提前偷看容易。
你也可以做到這一點拉鍊:
for cur, next in zip(arr, arr[1:]):
if nxt=='bar':
print cur+nxt
但是記住,迭代次數將只有兩個,因爲len(ar[1:])
將2
爲什麼不使用'elif'或'else' ? –
您可以通過查看[2395160](http://stackoverflow.com/questions/2395160/what-is-the-correct-syntax-for-else-if)得到您要找的答案 – cynicaljoy
@EliKorvigo:I認爲OP只是想訪問當前和下一個元素。 –