如何更改列表的值???
>>> a=range(0,5)
>>> b=10
>>> c=a
>>> c.append(b)
>>> c
[0, 1, 2, 3, 4, 10]
>>> a
[0, 1, 2, 3, 4, 10]
直到今天我还不知道python中的列表是可变的!
答案 0 :(得分:7)
以下语句使c
引用与a
引用相同的列表。
c = a
要制作(浅)副本,请使用切片表示法:
c = a[:]
或使用copy.copy
:
import copy
c = copy.copy(a)
>>> a = range(5)
>>> c = a[:] # <-- make a copy
>>> c.append(10)
>>> a
[0, 1, 2, 3, 4]
>>> c
[0, 1, 2, 3, 4, 10]
>>> a is c
False
>>> c = a # <--- make `c` reference the same list
>>> a is c
True
答案 1 :(得分:1)
您正在c
引用与a
相同的列表。因此,要制作浅表副本,请使用list()
>>> a = [1,2,3]
>>> b = list(a)
>>> b
[1, 2, 3]
>>> b.append(4)
>>> a
[1, 2, 3]
>>> b
[1, 2, 3, 4]
>>>
答案 2 :(得分:1)
您可以将列表转换为元组,这是一个不可变列表。
元组是一个不可变的列表。一旦创建了元组,就无法以任何方式进行更改。
另外
元组可以转换为列表,反之亦然。内置元组函数接受一个列表并返回一个具有相同元素的元组,list函数接受一个元组并返回一个列表。实际上,元组冻结了一个列表,列表解冻了一个元组。