t**r 发帖数: 3428 | 1 foo = bar if bar else {} 這種語法真的惡心到家 |
n*****j 发帖数: 18 | 2 我最不喜欢的风格是objective c, 其次ruby. |
V*********r 发帖数: 666 | 3 foo = if bar then bar else {} 如何?
【在 t**r 的大作中提到】 : foo = bar if bar else {} 這種語法真的惡心到家
|
j******o 发帖数: 4219 | |
z****u 发帖数: 185 | 5 what's wrong with it?
【在 t**r 的大作中提到】 : foo = bar if bar else {} 這種語法真的惡心到家
|
v*******e 发帖数: 11604 | 6
我们python男都喜欢这个语法。
[i for i in list if i else i+1]
【在 z****u 的大作中提到】 : what's wrong with it?
|
L***s 发帖数: 1148 | 7 你这个语法错误
【在 v*******e 的大作中提到】 : : 我们python男都喜欢这个语法。 : [i for i in list if i else i+1]
|
v*******e 发帖数: 11604 | 8
改下:
[i if i else i+1for i in list ]
【在 L***s 的大作中提到】 : 你这个语法错误
|
L***s 发帖数: 1148 | 9
也是错的。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 发帖数: 1137 | 10 Actually it is about speed |
|
|
d******e 发帖数: 2265 | 11 bar or 0
by python male
【在 t**r 的大作中提到】 : foo = bar if bar else {} 這種語法真的惡心到家
|
L***s 发帖数: 1148 | 12
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 发帖数: 11604 | 13 你的知识过时啦。
$ 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 发帖数: 421 | 14 one-liner本身是值得提倡的
但真正简洁的one liner应该写成javascript语法,
foo = bar || {}
而不是python语法
foo = bar if bar else {}
【在 j******o 的大作中提到】 : 很多人以能写one-liner为荣
|
D*******a 发帖数: 3688 | 15 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 发帖数: 11604 | 16
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 {}
|