考虑我的程序中有以下代码块来读取大文本文件中的数据:
sets = []
for line in open(file, "r"):
sets.append(line.split()) # sets is a list of lists
我不想更改列表中的值。因为元组在内存和处理器上更容易,我应该做以下操作吗?
sets = []
for line in open(file, "r"):
sets.append(tuple(line.split())) # sets is a list of tuples
或者只是使用列表,因为数据是同质的? 如果元组更好,我可以过火并执行此操作:
sets = tuple(sets)
答案 0 :(得分:5)
元组和列表之间的区别是有序的含义。元组和列表都是有序序列,但是列表应该是同构的,而元组通常从它们的顺序中依次绘制含义。例如,有序对是一个元组,因为
(3, 5)
完全不同于
(5, 3)
在您的案例中,似乎有同质数据不需要是不可变的,并且不会从其位置汲取任何含义。因此,我会使用列表列表,而不是元组列表。
答案 1 :(得分:2)
最终可能会使用更少的内存,但是列表仍然会暂时创建,并且您需要额外的工作将它们转换为元组,因此在处理器上可能并不容易。
你真的应该分析你的整体计划,寻找最大的性能弱点,如果你想知道某些东西是否会有所帮助,那就衡量两种可能性。