Python列表修改元素

Python提供了两种修改列表元素的方法, 可以每次修改单个元素, 也可以每次修改一组元素.

修改单个元素

修改单个元素非常简单, 通过索引获得列表元素后, 直接对其赋值即可.

Example:

nums = [1, 2, 3, 4, 5]

# 使用整数索引
nums[1] = 20

# 使用负数索引
nums[-1] = 50

修改一组元素

Python支持通过切片语法给一组元素赋值. 在进行这种操作时, 如果不指定步长(step参数), 则就不要求新赋值的元素个数与原来的元素个数相同, 这意味, 该操作既可以为列表添加元素, 也可以为列表删除元素.

Example:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8]

# 修改第1~4元素的值(不包括第4个元素)
nums[1:4] = [10, 20, 30]

# 新赋值的元素个数比原来要多
nums[1:4] = [10, 20, 30, 40, 50]

# 新赋值的元素个数比原来要少
nums[1:4] = [10]

# 将空序列赋给切片, 相当于删除操作
nums[1:4] = []

如果对空切片(L[n:n])赋值, 就相当于插入一组新元素.

Example:

nums = [0, 1, 2, 3, 4, 5]

# 在第4个位置插入新元素
nums[4:4] = ['a', 'b', 'c']

使用切片语法赋值时, Python不支持单个值, 例如下面的写法是错误的:

nums[4:4] = 100

但是如果使用字符串赋值, Python会自动将字符串转换成序列, 其中的每个字符都是一个元素, 例如:

s = list('Hello')
s[2:4] = 'world'

使用切片语法时也可以指定步长(step参数), 但这个时候就要求赋值的新元素的个数和原有元素的个数相同, 例如:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8]
# 步长为2, 为第1, 3, 5个元素赋值
nums[1:6:2] = [10, 20, 30]