这些语句中哪一个更符合 Python 风格?如果我添加更多比较,一个会比另一个更有用吗?
if(card3 == game_data['card1'] or card3 == game_data['card2'])
或者
if (card3 in [game_data['card1'], game_data['card2']])
这些语句中哪一个更符合 Python 风格?如果我添加更多比较,一个会比另一个更有用吗?
if(card3 == game_data['card1'] or card3 == game_data['card2'])
或者
if (card3 in [game_data['card1'], game_data['card2']])
只有两个比较,任何一个都可以。但第二种方式更 Pythonic,因为它更自然地扩展到更大数量的比较。此外,正如 Perkins 提到的,如果game_data
是一个 dict 并且 "card1" 和 "card2" 是唯一的键,那么你可以使用if card3 in game_data.values()
.
对于您可以手动输入的任何数量的案例,创建列表的开销可以忽略不计。如果您有太多无法手动输入的内容,则可以将它们存储在某种容器中,然后可以in
在该容器上使用。
坚持or
进行大量比较的唯一原因是,如果您要比较的对象是不寻常的对象,其相等性测试的计算成本很高,并且您需要依靠短路行为or
来专门测试它们有动机的秩序。不过,这将是一个不寻常的情况。
或者。也会更快。另一种方式创建一个列表然后将其丢弃,这是浪费且不太清晰。如果只有两个键,您可以if card3 in game_data.values()
使用 ,否则使用or
。