【在 v*******e 的大作中提到】 : : 我们python男都喜欢这个语法。 : [i for i in list if i else i+1]
v*e
18 楼
改下: [i if i else i+1for i in list ]
【在 L***s 的大作中提到】 : 你这个语法错误
L*s
19 楼
也是错的。list comprehension不能带else的。 正确语法是 [f(x) for x in iterable if p(x)] 等价于 map(f, filter(p, iterable)) 也就是 result = [] for x in iterable: if p(x): result.append(f(x)) 少打一些字罢了
【在 v*******e 的大作中提到】 : : 改下: : [i if i else i+1for i in list ]
w*m
20 楼
Actually it is about speed
d*e
21 楼
bar or 0 by python male
【在 t**r 的大作中提到】 : foo = bar if bar else {} 這種語法真的惡心到家
L*s
22 楼
and-or compound expressions have different semantics than, and cannot replace, if-else statements. In Python community, it is almost always preferable to use plain if-else statements when one needs branching.
【在 d******e 的大作中提到】 : bar or 0 : by python male
v*e
23 楼
你的知识过时啦。 $ python Python 2.7.5 (default, Sep 25 2014, 13:52:19) [GCC 4.8.3 20140624 (Red Hat 4.8.3-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> myList=[0,1,2,3] >>> [i if i else i+1 for i in myList] [1, 1, 2, 3]
【在 L***s 的大作中提到】 : : and-or compound expressions have different semantics : than, and cannot replace, if-else statements. : In Python community, it is almost always preferable : to use plain if-else statements when one needs branching.
c*1
24 楼
one-liner本身是值得提倡的 但真正简洁的one liner应该写成javascript语法, foo = bar || {} 而不是python语法 foo = bar if bar else {}
【在 j******o 的大作中提到】 : 很多人以能写one-liner为荣
D*a
25 楼
are you sure {} in "foo = bar || {}" will DEFINITELY NOT be evaluated?
【在 c********1 的大作中提到】 : one-liner本身是值得提倡的 : 但真正简洁的one liner应该写成javascript语法, : foo = bar || {} : 而不是python语法 : foo = bar if bar else {}
v*e
26 楼
python的好,因为还可以 foo = f(bar) if test(bar) else g(bar)
【在 c********1 的大作中提到】 : one-liner本身是值得提倡的 : 但真正简洁的one liner应该写成javascript语法, : foo = bar || {} : 而不是python语法 : foo = bar if bar else {}