看板 Python 關於我們 聯絡資訊
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
Freak1033:[i+10 if i<10 else i for i in a] 10/02 23:41
Freak1033:expr_true if cond else expr_false 只有 python2.5 有. 10/02 23:41
qrtt1:[e+10 for e in a if e < 10]+[e for e in a if e > = 10] 10/02 23:43
qrtt1:以上是我呆人的作法 XD 10/02 23:43
yoco315:喔耶喔耶~感謝樓上兩位,我成功了 XD 10/03 00:53