2 回答

TA贡献1853条经验 获得超18个赞
实际上,您确实获得了“指针”。列表(以及任何可变值类型!)在Python中作为参考传递。
您可以通过将列表传递给list()对象构造函数或使用进行完整切片来复制列表[:]。
a = [1,2,3]
b = a
c = list(a)
d = a[:]
a[1] = 4 # changes the list referenced by both 'a' and 'b', but not 'c' or 'd'

TA贡献1866条经验 获得超5个赞
你说的没错!在Python中,当您将列表作为函数的参数传递,或将列表分配给另一个变量时,实际上是在将指针传递给该变量。
这是出于效率原因;如果您每次执行上述操作之一时都单独制作了1000项列表的副本,则该程序将消耗过多的内存和时间。
要在Python中克服这一问题,您可以使用= originalList[:]或复制一个一维列表= list(originalList):
sentence = sentences[0][:] # or sentence = list(sentences[0])
sentence.insert(0,startc)
sentence.append(endc)
print(sentence) # modified
print(sentences[0]) # not modified
如果您需要复制2D列表,请考虑使用列表理解。
添加回答
举报