出于好奇...
在红宝石中:
=>$ irb
1.8.7 :001 > puts x = 2
2
=> nil
1.8.7 :002 > puts x += 2 while x < 40
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
这很方便。
是否有可能在 Python 中用一行代码做到这一点,如果可以,怎么做?
出于好奇...
在红宝石中:
=>$ irb
1.8.7 :001 > puts x = 2
2
=> nil
1.8.7 :002 > puts x += 2 while x < 40
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
这很方便。
是否有可能在 Python 中用一行代码做到这一点,如果可以,怎么做?
在 Python 中你不能完全或非常相似地做同样的事情的原因是因为在 Ruby 中,一切都是表达式。
Python 在语句和表达式之间有区别,并且只能评估表达式(因此打印,我的意思是传递给打印运算符/函数)。
所以这样的代码不能以你向我们展示的那种形式在 Python 中完成。您所能做的就是找到一些“类似”的方式将上面的语句写成 Python 表达式,但绝对不会是“Rubyous”。
恕我直言,在 Python 中,这种行为是不可能的(如本用例中所述),很好地遵循了 Python 规则的“显式优于隐式”禅宗。
产生相同结果的单线:
for x in xrange(4,42,2): print x
给出:
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
xrange是一个内置函数,它返回一个“xrange 对象”,它产生下一个项目而不将它们全部存储(就像这样做),这与 OP 的循环range
非常相似。while
这在 python 中是不可能的;您不能使用语句 ( x += 2
) 作为要打印的表达式。
在保留其他答案中关于赋值不是 Python 中的表达式的注释后,可以在 Python 中执行此操作:
from __future__ import print_function
[print(x) for x in range(0,42,2)]