作者yoco315 (眠月)
看板Python
標題list 的初始化語法..
時間Tue Oct 2 23:27:41 2007
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