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

看板Python作者 (ccccccc)時間7年前 (2018/06/26 16:35), 編輯推噓2(206)
留言8則, 4人參與, 7年前最新討論串3/3 (看更多)
※ 引述《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。 : 請教各位大神。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.221.35.72 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1530002107.A.451.html

06/26 23:34, 7年前 , 1F
這樣跳過了全部的奇數,好像不符合他的需求
06/26 23:34, 1F

06/26 23:37, 7年前 , 2F
而且用List Comprehensions寫雖然可以寫成一行,但我覺
06/26 23:37, 2F

06/26 23:37, 7年前 , 3F
得跑起來絕對比正常寫成多行的方式慢!
06/26 23:37, 3F

06/27 10:44, 7年前 , 4F
對啊 因為我不知道他要判斷什麼條件 但他只印0,2,4就mod
06/27 10:44, 4F

06/27 10:51, 7年前 , 5F
我以為list comprehensions比較快?https://goo.gl/2SvgCz
06/27 10:51, 5F

06/27 17:01, 7年前 , 6F
list compression 絕對是比較快,stackoverflow上一
06/27 17:01, 6F

06/27 17:01, 7年前 , 7F
堆實測
06/27 17:01, 7F

06/30 19:55, 7年前 , 8F
range()有個step的參數 設2即可
06/30 19:55, 8F
文章代碼(AID): #1RCVgxHH (Python)
文章代碼(AID): #1RCVgxHH (Python)