我想知道在python if
语句中是否有任何理由更喜欢列表而不是元组,反之亦然。因此,以下功能相同,但在性能和编码风格方面优于另一个,还是无关紧要?
if x in (1,2,3):
foo()
if x in [1,2,3]:
foo()
我似乎已经养成了使用元组的习惯,如果有2或3个值和列表的任何更长的时间,我认为因为根据我的经验,元组往往很短并列出很长,但这似乎有点武断,可能不必要的不一致。
我会对人们可以给出的任何一个比另一个更好的例子感兴趣。
干杯
答案 0 :(得分:5)
tuple
的初始化(至少在CPython中)产生的字节码少于list
- 但它真的没什么值得担心的。我相信会员测试几乎是一样的(尽管没有经过测试)。
对于纯粹的成员资格测试,查找语义是相同的。从Python 2.7开始,它的写入要好得多(并且增加了它仅仅是成员资格测试的含义):
if x in {1, 2, 3}:
pass # do something
在此之前:
if x in set([1,2,3]):
pass # do something
看起来有点笨拙......
答案 1 :(得分:0)
list和tuple之间的区别在于列表是可变的,元组是不可变的。
人们倾向于使用元组用于异构集合,类似于C中的结构,并且列表用于同源集合,类似于C中的数组。