numbers = [1,2,3,4,5,6,7,8,9]
number = 1
我可以在一行写入以下内容吗?Python一个班轮?如果x在y中,请执行x
if number in numbers:
print number
使用Ruby的风格:
puts number if numbers.include?(number)
我曾尝试:
print number if number in numbers
但语法是无效的。
numbers = [1,2,3,4,5,6,7,8,9]
number = 1
我可以在一行写入以下内容吗?Python一个班轮?如果x在y中,请执行x
if number in numbers:
print number
使用Ruby的风格:
puts number if numbers.include?(number)
我曾尝试:
print number if number in numbers
但语法是无效的。
Python是Python,Ruby是Ruby。我的建议不是尝试在另一个中写一个。
Python没有Ruby的/ Perl的“postfix if”,并且Pythonic写这个的方法就是你已经得到的。
但如果你真的要,这将工作:
if number in numbers: print number
这是对官方的风格指南,PEP8,虽然:
复合语句(在相同的多个语句线)通常是不鼓励的。
是:
if foo == 'blah': do_blah_thing() do_one() do_two() do_three()
而不是:
if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three()
这应该做的伎俩:
if number in numbers: print number
或者,如果你正在使用Python 3:
if number in numbers: print(number)
恕我直言,可读性较差,所以我使用两个班轮。
python的语法是yes_value if test else no_value
。为了清楚起见,可选圆括号,你可以这样说:
print "Searching...", ("Found it" if n in numbers else "Not found")
我同意,语法是非常直观的。即使是C条件表达式也更容易阅读。
你的事实很好,但我觉得你的意见令人震惊。 – 2012-02-19 04:38:36
什么是如此令人震惊? – pythondjango 2012-02-19 08:56:53
如果添加其他“”到你原来的代码最终你会得到在Python 2.7工作构建:
print number if number in numbers else ""
如果数字是数字那么它会被打印出来。否则,将打印一个空字符串。
但是,正如其他人所指出的,如果你真的不希望在所有执行打印语句,你必须去:
if number in numbers: print number
FWIW,另一种方式来做到这一点在Ruby是阵列路口:'放数字和[数字]'。我不知道Python中是否有简单的等价物。 – 2012-02-18 23:03:09
除了下面的答案,还有[this](http://stackoverflow.com/q/9345250/988071)线程。 – mau5padd 2012-02-18 23:59:22
@MarkThomas我不知道。尼斯;) – beoliver 2012-02-19 09:33:35