更改列表元素的值

时间:2014-04-15 19:24:01

标签: python list python-3.x

我创建了一个包含各种值的列表。但是,我想知道如何更新/替换特定位置列表中的数据。例如,如果我有一个列表如下:[hello, goodbye, welcome, message]我想用位置2替换字符串'wave'。我该怎么办?我尝试了下面的代码,但它将值移到右边并插入一个新的数据位置给出了位置:

MyList = ['hello', 'goodbye', 'welcome', 'message']
MyList.insert(2, 'wave')

1 个答案:

答案 0 :(得分:4)

列表可变,这意味着您可以在适当的位置更改它们。因此,您可以简单地为索引2指定新值:

>>> lst = range(10)
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[2] = "new value"
>>> lst
[0, 1, 'new value', 3, 4, 5, 6, 7, 8, 9]

dicts也是可变的:

>>> d = {1:'a',2:'b'}
>>> d[2] = "new value"
>>> d
{1: 'a', 2: 'new value'}

但是,字符串和元组不是。您可以迭代它们,这有时会导致混淆,(尤其是子字符串符号与切片)

>>> aString = "Hello, my name is Dave"
'my '
>>> aString[7:9]
'my'
>>> aString[7:9] = "MY"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

类似地,

>>> tup = (1,2,3)
>>> tup[0]
1
>>> tup[0] = 6
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

对于字符串,你可以&#34;作弊&#34;通过将它们转换为列表(split()),改变它们,然后将它们放回一个字符串(join()),但这是字符串的实际变异到位