Python 理解疑难解答

Python Comprehensions troubleshooting

我在正确设置 if 语句时遇到问题。

这是我的代码:

def task_13():
    Main_meal=['Meat','Cheese','Fish']
    addons=['Potatoes','Rice','Salad']
    my_meal=[(x+y) for x in Main_meal for y in addons if (x+y)!= 'FishRice' and 'CheeseRice']
    print(my_meal)

我的问题是,为什么 Python 过滤掉了 'CheeseRice' ,但只过滤掉了 'FishRice' 选项。

这是我的输出:

['MeatPotatoes', 'MeatRice', 'MeatSalad', 'CheesePotatoes', 'CheeseRice', 'CheeseSalad', 'FishPotatoes', 'FishSalad']

感谢您的建议。

这里是官方的reference on Python operator precedence,注意and的优先级低于!=,所以先计算!=。此外,and 是一个简单的运算符,它接受两边的布尔值,而 returns 是一个表示它们的逻辑 AND 的布尔值,它不会执行您试图让它执行的操作。

而不是

if (x+y)!= 'FishRice' and 'CheeseRice'

你需要:

if (x+y)!= 'FishRice' and (x+y) != 'CheeseRice'

或者

if (x+y) not in ('FishRice', 'CheeseRice')