Python one liner?如果x在y中,则执行x

beo*_*ver 2 ruby python

numbers = [1,2,3,4,5,6,7,8,9]
number = 1
Run Code Online (Sandbox Code Playgroud)

我可以在一行上写下以下内容吗?

if number in numbers:
    print number
Run Code Online (Sandbox Code Playgroud)

使用红宝石的风格:

puts number if numbers.include?(number)
Run Code Online (Sandbox Code Playgroud)

我试过了:

print number if number in numbers
Run Code Online (Sandbox Code Playgroud)

但语法无效.

Tho*_*mas 9

Python是Python,Ruby是Ruby.我的建议是不要尝试在另一个中写一个.

Python没有Ruby的/ Perl的"postfix if",而Pythonic的写法就是你已经得到的.

但如果你真的必须,这将有效:

if number in numbers: print number
Run Code Online (Sandbox Code Playgroud)

这是违反官方风格指南,PEP8,但:


ale*_*xis 5

python的语法是yes_value if test else no_value.为清晰起见,可选括号,您可以这样说:

print "Searching...", ("Found it" if n in numbers else "Not found")
Run Code Online (Sandbox Code Playgroud)

我同意,语法非常不直观.甚至C条件表达式也更容易阅读.

  • 什么骇人听闻? (4认同)