【发布时间】:2021-03-27 16:04:19
【问题描述】:
我正在尝试加强我的“最佳实践”,并且我正在阅读有关列表与元组和内存分配的更多信息,以及如果在程序运行时不会更改列表,您应该如何使用元组.
话虽如此,如果是这种情况,您是否应该(几乎)总是从列表转换为元组?
例如,假设我有这段代码,我正在查看用户输入的 100 种颜色:
with open("colors.txt", "r") as file:
lst = [line.strip() for line in file.readlines()]
我不打算改变列表。这是否意味着我应该遵循:
tup = tuple(lst)
然后使用tup?
我意识到这是一个很小的例子,转换为元组只需要 1 行,但这是最佳做法吗?只是感觉有点笨拙,因为它对我来说是新的。
谢谢!
【问题讨论】:
-
为什么不直接使用
tuple开头呢?color_tup = tuple(line.strip() for line in file.readlines()) -
或
tuple(map(str.strip, file))。列表或元组都可以正常工作。 -
好点@khelwood 因为它只是一个操作,使用
map肯定更好。 -
OP,在这种情况下,“最佳实践”将简单地使用
tuple开头,如前面的 cmets 中所述。那,并且使用比lst更好的变量名:D 至于使用list而不是tuple,它确实取决于您的用例。如果您不打算修改内容,请绝对使用tuple。或者set,如果您不关心订单并且想要强制执行独特的元素(以及恒定的时间成员资格检查!)。 -
具有相同元素的元组列表之间的内存消耗差异在现代机器上不太可能显着,除非您正在处理真正的大数据。从语义上讲,使用元组表示元素在集合中的位置很重要,例如在
('Jane', 'Smith')'Jane' 是给定名称,'Smith' 是姓氏。在列表中,位置无关紧要:在['red', 'blue', 'yellow']中,所有元素都是颜色,在列表中的第一个或最后一个并不重要。
标签: python python-3.x list tuples