Python one liner? 如果x在y中,则执行x
numbers = [1,2,3,4,5,6,7,8,9] number = 1
我可以在一行上写下以下内容吗?
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()
yes_value if test else no_value
python语法为yes_value if test else no_value
。 为清晰起见,可选括号,您可以这样说:
print "Searching...", ("Found it" if n in numbers else "Not found")
我同意,语法非常不直观。 甚至C条件表达式也更容易阅读。
如果在原始代码的末尾添加“ \ n” ,则可以在Python 2.7中获得有效的构造:
print number if number in numbers else ""
如果数字是数字,那么它将被打印。 否则,将打印一个空字符串。
但正如其他人所说,如果你真的不想要执行print语句,你必须遵循:
if number in numbers: print number
这应该是诀窍:
if number in numbers: print number
或者,如果您使用的是Python 3:
if number in numbers: print(number)
恕我直言,可读性较差所以我使用了两个内胆。