亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Python中更改for循環的索引?

如何在Python中更改for循環的索引?

繁星coding 2019-12-03 15:45:53
假設我有一個for循環:for i in range(1,10):    if i is 5:        i = 7如果要i滿足某些條件,我想更改。我試過了,但是沒用。我該怎么辦?
查看完整描述

3 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

對于您的特定示例,這將起作用:


for i in range(1, 10):

    if i in (5, 6):

        continue

但是,使用while循環可能會更好:


i = 1

while i < 10:

    if i == 5:

        i = 7

    # other code

    i += 1

甲for環分配一個變量(在這種情況下i/在每次迭代開始時)到下一個元素列表中的迭代。這意味著無論您在循環內做什么,i都將成為下一個元素。該while循環有沒有這樣的限制。


查看完整回答
反對 回復 2019-12-03
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

為什么問題循環無法按預期工作的更多背景知識。


一個循環


for i in iterable: 

    # some code with i

是基本的速記


iterator = iter(iterable)

while True:

    try:

        i = next(iterator)            

    except StopIteration:

        break

    # some code with i

因此,for循環從一個由迭代器構成的迭代器中提取值,并自動識別該迭代器何時用盡并停止。


正如你所看到的,在每次迭代while循環我被重新分配,因此值i將被覆蓋,無論您在發出任何其他的重新分配的# some code with i一部分。


因此,forPython中的循環不適合對循環變量進行永久性更改,因此您應該采用while循環,正如Volatility的答案中已經證明的那樣。


查看完整回答
反對 回復 2019-12-03
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

這個概念在C語言世界中并不罕見,但應盡可能避免。但是,這就是我實施的方式,以一種我清楚知道正在發生的方式。然后,您可以在循環內的任何位置將要向前跳轉的邏輯放在索引中,讀者會知道要注意skip變量,而很容易錯過將i = 7嵌入深處的情況:


skip = 0

for i in range(1,10):

   if skip:

      skip -= 1

      continue


   if i=5:

      skip = 2


   <other stuff>


查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 1678 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號