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) 

恕我直言,可读性较差所以我使用了两个内胆。