0

这些语句中哪一个更符合 Python 风格?如果我添加更多比较,一个会比另一个更有用吗?

if(card3 == game_data['card1'] or card3 == game_data['card2'])

或者

if (card3 in [game_data['card1'],  game_data['card2']])
4

2 回答 2

5

只有两个比较,任何一个都可以。但第二种方式更 Pythonic,因为它更自然地扩展到更大数量的比较。此外,正如 Perkins 提到的,如果game_data是一个 dict 并且 "card1" 和 "card2" 是唯一的键,那么你可以使用if card3 in game_data.values().

对于您可以手动输入的任何数量的案例,创建列表的开销可以忽略不计。如果您有太多无法手动输入的内容,则可以将它们存储在某种容器中,然后可以in在该容器上使用。

坚持or进行大量比较的唯一原因是,如果您要比较的对象是不寻常的对象,其相等性测试的计算成本很高,并且您需要依靠短路行为or来专门测试它们有动机的秩序。不过,这将是一个不寻常的情况。

于 2013-06-09T04:34:20.763 回答
-1

或者。也会更快。另一种方式创建一个列表然后将其丢弃,这是浪费且不太清晰。如果只有两个键,您可以if card3 in game_data.values()使用 ,否则使用or

于 2013-06-09T04:28:05.753 回答