Re: [問題] for loop 的 index 存取問題

作者: rexyeah (ccccccc)   2018-06-26 16:35:05
※ 引述《henry8168 (番薯猴)》之銘言:
: 剛發現一件我誤會很久的事情,假設我有段程式碼:
: for i in range(5):
: print(i)
: i += 1
: 我執行的預期結果是
: 0
: 2
: 4
: 結果卻是
: 0
: 1
: 2
: 3
: 4
: https://imgur.com/V0glZVM.png
: 這跟 C++ 的理解真的差很多,請問我該怎麼讓它出現預期的結果?
: 因為這本來是寫在判斷某個條件發生時,要 iterator 跳過下次的執行用的。
因為不知道你要判斷什麼條件,以你要的預期結果也許可以寫成
def do(x):
# do something
print x
[do(a) for a in range(5) if not (a%2)]
result:
0
2
4
: 寫 next(i) 無法達到目的,因為 i 是 int type。
: 請教各位大神。
作者: AlaRduTP (Eden)   2018-06-26 23:34:00
這樣跳過了全部的奇數,好像不符合他的需求而且用List Comprehensions寫雖然可以寫成一行,但我覺得跑起來絕對比正常寫成多行的方式慢!
作者: rexyeah (ccccccc)   2018-06-27 10:44:00
對啊 因為我不知道他要判斷什麼條件 但他只印0,2,4就mod我以為list comprehensions比較快?https://goo.gl/2SvgCz
作者: handsomeLin (DoGLin)   2018-06-27 17:01:00
list compression 絕對是比較快,stackoverflow上一堆實測
作者: alex13587 (名名)   2018-06-30 19:55:00
range()有個step的參數 設2即可

Links booklink

Contact Us: admin [ a t ] ucptt.com