有人告诉我map()非常快(https://www.python.org/doc/essays/list2str/),所以我尝试用它来复制列表列表,而不考虑易变性,我对每个子列表调用tuple,如下所示:
sheet = [['a','a','a'],
['a','a','a'],
['a','a','a'],
['a','a','a'],
['a','a','a']]
newsheet1 = map(tuple,sheet)
但发现map对象保留了对原始图纸子列表元素的引用(可通过更改图纸中的值来证明),更改将反映在map对象中:
sheet[0][0] = 'CHANGED'
for r in newsheet1:
print (r)
印刷品:
('CHANGED', 'a', 'a')
('a', 'a', 'a')
('a', 'a', 'a')
('a', 'a', 'a')
('a', 'a', 'a')
所以我试着用列表理解来复制:
newsheet2 = [tuple(row) for row in sheet]
sheet[0][0] = 'CHANGED'
print (newsheet2[0])
印刷品:
('a', 'a', 'a')
所以列表理解没有保留原始元素引用,但是它是否比使用map()慢得多?如果更快的话,有没有什么方法可以在这里使用map()而不维护引用?你知道吗
我想我的问题可以归结为复制列表的最快方法
目前没有回答
相关问题 更多 >
编程相关推荐