list 的初始化語法..

看板Python作者 (眠月)時間17年前 (2007/10/02 23:27), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/2 (看更多)
list initialization 有個簡單語法是這樣 >>> a = [2, 3, 4] >>> [ i*2 for i in a ] [4, 6, 8] 如果我想要有條件式的設定我的元素,那有辦法做到嗎 O_Q? 比方說我希望當 i < 10 的時候,我希望是設定 i + 10 像是這樣 >>> [ if i<10 : i+10 ; else : i for i in a ] 當然這個語法不會 work XD 如果不這樣寫,我可以用傳統的寫法 >>> result = [] >>> for i in a : if i < 10 : result.append(i+10) else : result.append(i) 或是 >>> def f(n) : if i < 10 : return i + 10 else : return i >>> [ f(i) for i in a ] 但是好像兩種都有麻煩到 XD 如果是 C++ 的話,我就可以這樣寫 >>> [ i<10?i+10:i for i in a ] 但是當然還是不 work XD 請問前輩有沒有比較偷懶的寫法阿? 因為我還蠻常要用到這樣的語句的, 實在不想為小功能寫三四行的程式... -- To iterate is human, to recurse is divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.40

10/02 23:41, , 1F
[i+10 if i<10 else i for i in a]
10/02 23:41, 1F

10/02 23:41, , 2F
expr_true if cond else expr_false 只有 python2.5 有.
10/02 23:41, 2F

10/02 23:43, , 3F
[e+10 for e in a if e < 10]+[e for e in a if e > = 10]
10/02 23:43, 3F

10/02 23:43, , 4F
以上是我呆人的作法 XD
10/02 23:43, 4F

10/03 00:53, , 5F
喔耶喔耶~感謝樓上兩位,我成功了 XD
10/03 00:53, 5F
文章代碼(AID): #170cDlMC (Python)
討論串 (同標題文章)
文章代碼(AID): #170cDlMC (Python)