如何在不创建新元素的情况下更改列表中的n个连续元素?

时间:2016-10-29 11:15:06

标签: python list python-3.x

基本上,我必须使用一个函数来修改列表,我改变了n个连续的元素。但问题是,我无法返回列表(函数无法返回任何内容),所以据我所知,我无法创建新列表,因为这不会改变我通过函数参数获得的列表。

我用这样的while循环完成了它:

while i < length:
     my_list[index+i] = element
     i += 1

我想知道是否有任何其他解决方案,类似于列表理解或类似的东西。我是Python的新手,所以这纯粹是为了探索目的。

1 个答案:

答案 0 :(得分:7)

您可以使用切片分配:

my_list[index:index + length] = (e for _ in range(length)) # or (e,) * length

上面的行将替换my_list区间内[index, index + length)位置的元素,其中元素位于赋值右侧的iterable中。请注意,切片的长度和iterable的长度必须匹配。否则,将删除一些元素(如果可迭代更短)或将添加更多元素(如果可迭代的更长)。

示例:

In [14]: my_list = [1, 2, 3, 4, 5, 6]

In [15]: index, length, element = 1, 3, 0

In [16]: my_list[index:index + length] = (element for _ in range(length))

In [17]: my_list
Out[17]: [1, 0, 0, 0, 5, 6]