为了好奇......的Python相当于Ruby的表情: “将X个+ =价值”
在Ruby:
=>$ 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的表情: “将X个+ =价值”
在Ruby:
=>$ 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规则禅。
你的答案的前两个阶段解释了这一切。 我没有试图找到一种“Rubyous”方法来在Python中做某些事情,我只是发现比较这两种语言颇具启发性。有没有办法在Python中的一行中实现相同的循环?我从来没有在python中使用这种表达式,但据我所知,我不能在python中这样做,所以我想知道它是否可能以某种方式。 – nemesisdesign
“,而x <40:x + = 2; print x;”例如... – nemesisdesign
不知道我理解你的ZoP参考。关于给定代码的含义是什么? –
这在Python中是不可能的;您不能使用语句(x += 2
)作为要打印的表达式。
一衬垫,以产生相同的结果:
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对象”,其产生的下一个项目没有内建将它们全部存储起来(像range
一样),这与OP的while
循环非常相似。
“为我在xrange(4,42,2):打印我”也 – nemesisdesign
@nemesisdesign更好:) – zenpoy
随着对分配新建分配FY没有在Python上其他的答案是表达的言论不停, 一个可以在Python做到这一点:
from __future__ import print_function
[print(x) for x in range(0,42,2)]
我不知道红宝石,但我想了解某一天(所以原谅我的无知) - 这与“范围(4,40,2)”有什么不同?还是等效的发电机功能? – mgilson
这里的关键是,其他人已经回答了,ruby允许运行一个语句作为表达式,所以更多的东西可以在更少的空间中完成。我想知道是否有可能在python中实现类似的功能,只是为了好奇。 – nemesisdesign