我對Python很陌生,正在研究現有的代碼庫。迭代列表的方法
我看到這種模式的代碼位:
for i in range(len(my_list)):
item = my_list[i]
# process item
有一個很好的理由,這不應該簡化爲:
for item in my_list:
# process item
我不需要的項目的索引在for
循環內,除了取消引用列表項本身。那麼後者有沒有問題,我沒有看到?
我對Python很陌生,正在研究現有的代碼庫。迭代列表的方法
我看到這種模式的代碼位:
for i in range(len(my_list)):
item = my_list[i]
# process item
有一個很好的理由,這不應該簡化爲:
for item in my_list:
# process item
我不需要的項目的索引在for
循環內,除了取消引用列表項本身。那麼後者有沒有問題,我沒有看到?
有很好的理由將其簡化爲第二種形式;它是首選的Pythonic方法;但只要使用foo
直接:
for foo in my_list:
# process item
如果需要索引以及,使用enumerate()
:
for i, foo in enumerate(my_list):
# process item
創建for
遍歷列表len()
的range()
通常是一個標誌有人從一種沒有for each
構造的語言轉移到Python,就像C一樣,他們還沒有習慣Python for
循環的真正工作方式。
而我能想到的唯一原因(就是不知道'for blah in'是否可用),是需要循環修改列表,但顯然這屬於你的'enumerate'示例;) –
@ JonClements:該索引仍然會被關閉,在這種情況下,你必須使用'while'循環。 –
關閉一個吧? –
他們都是一樣的,但我不明白你爲什麼要這樣做。 'foo'將永遠是最後一個元素。後者更清潔 – TerryA
@Haidro我認爲我們可以假設循環體中有更多的代碼。 – delnan
@Haidro,delnan是正確的。我會在這個問題上更清楚一點。 –