【发布时间】:2017-10-14 18:43:30
【问题描述】:
我的 Python 程序中有一个相当大的相同类型对象列表(>1K 个元素)。该列表永远不会被修改 - 不会添加、删除或更改任何元素。将对象放入元组而不是列表有什么缺点吗?
一方面,元组是不可变的,因此符合我的要求。另一方面,使用这么大的元组感觉是错误的。在我看来,元组一直是用于小集合的。是双倍、三倍、四倍……不是两千五十七倍。
我对大型元组的恐惧是否合理?它对性能、非 Python 或其他不好的做法有害吗?
【问题讨论】:
-
@Jan 如果我错了请纠正我,但我不能这样做
len(generator)。我需要能够做到这一点。 -
异质结构的元组,同质结构的列表。
-
你是如何创建列表的?既然你不能一块一块地建立一个元组,我只能想象你想做类似
my_tuple = tuple(my_list)的事情,但在那种情况下,这样做有什么好处?从预先存在的列表创建元组所花费的时间似乎不值得仅仅为了确保没有人尝试修改它。 -
这是元组的一个很好的用途,如果你不想修改,它是首选。我不知道整个异质/同质的东西是什么,这对我来说听起来很奇怪。
-
在内部,两者都只是连续的内存区域,因此性能上应该没有任何差异。一个元组可能占用更少的空间,因为列表会预先分配一些额外的空间,但这在实践中并不重要。您应该关心的唯一区别是您是否要保护对象不被编辑。
标签: python list collections tuples