基本上,我必须使用一个函数来修改列表,我改变了n个连续的元素。但问题是,我无法返回列表(函数无法返回任何内容),所以据我所知,我无法创建新列表,因为这不会改变我通过函数参数获得的列表。
我用这样的while循环完成了它:
while i < length:
my_list[index+i] = element
i += 1
我想知道是否有任何其他解决方案,类似于列表理解或类似的东西。我是Python的新手,所以这纯粹是为了探索目的。
答案 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]