繁体   English   中英

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

[英]How to change n consecutive elements in a list without creating a new one?

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

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

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

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

您可以使用切片分配:

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

上面的行将使用赋值右侧的iterable中的元素替换[index, index + length)区间内的my_list元素。 请注意,切片的长度和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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM