作者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
1F:推 Freak1033:[i+10 if i<10 else i for i in a] 10/02 23:41
2F:→ Freak1033:expr_true if cond else expr_false 只有 python2.5 有. 10/02 23:41
3F:→ qrtt1:[e+10 for e in a if e < 10]+[e for e in a if e > = 10] 10/02 23:43
4F:→ qrtt1:以上是我呆人的作法 XD 10/02 23:43
5F:推 yoco315:喔耶喔耶~感谢楼上两位,我成功了 XD 10/03 00:53