更新Python列表的正确方法是什么?

时间:2018-05-17 14:47:49

标签: python python-3.x list

我试过了:

listing = []
entry = [0.0]*2   
entry[0] = 1.0
entry[1] = 2.0
listing.append(entry) # My first entry

entry[0] = 2.0
entry[1] = 3.0
listing.append(entry) # Another entry

以上不起作用。保留相同的条目指针,因此更新条目还会更新列表的[1.0,2.0]条目。我可以用它来解决这个问题:

entry[0] = 1.0
entry[1] = 2.0
listing.append(entry) # My first entry
entry = [0.0]*2

entry[0] = 2.0
entry[1] = 3.0
listing.append(entry) # Another entry
entry = [0.0]*2

但这看起来很笨拙。有没有更简洁的方法呢?

更新:(这切断了这个重复的问题的喋喋不休) 至少对于Python 3.X用户来说,最好的方法是:

listing.append(entry.copy())

2 个答案:

答案 0 :(得分:1)

假设您希望将条目保留为列表(出于我怀疑的目的,我建议使用命名元组):

您可以内联条目创建

listing = []
listing.append([1.0,2.0])
listing.append([2.0,3.0])

答案 1 :(得分:1)

而不是:

entry = [0.0]*2   
entry[0] = 1.0
entry[1] = 2.0

使用:

# not mutable
entry = 1.0, 2.0
# mutable
entry = [1.0, 2.0]