5

if我想知道是否有充分的理由在 python语句中更喜欢列表而不是元组,反之亦然。因此,以下在功能上是等效的,但在性能和编码风格方面比另一个更可取,还是没关系?

if x in (1,2,3):
    foo()

if x in [1,2,3]:
    foo()

如果有 2 或 3 个值和更长的列表,我似乎已经养成了使用元组的习惯,我认为因为根据我的经验,元组往往很短而列表很长,但这似乎有点武断,可能不必要地不一致。

我会对人们可以举出的任何例子感兴趣,其中一个比另一个更好。

干杯

4

2 回答 2

5

a 的初始化tuple(至少在 CPython 中)产生的字节码比 a 少list——但这真的没什么好担心的。我相信会员测试几乎是一样的(虽然没有测试过)。

对于纯粹的成员资格测试,查找语义是相同的。从 Python 2.7 开始,编写起来要好得多(并暗示它只是成员资格测试):

if x in {1, 2, 3}:
    pass # do something

在此之前:

if x in set([1,2,3]):
    pass # do something

只是看起来有点笨拙……

于 2012-09-13T15:22:05.733 回答
0

列表和元组的区别在于列表是可变的,而元组是不可变的。

人们倾向于将元组用于异构集合,类似于 C 中的结构,而列表用于同质集合,类似于 C 中的数组。

于 2012-09-13T15:18:27.037 回答