python - 如何使 Python 列表在其切片被更改时可变

标签 python list mutable

<分区>

Python 的切片操作创建列表指定部分的副本。如何传递父列表的一部分,以便当该部分发生变化时,父列表的相应部分也随之变化?

def modify(input):
    input[0] = 4
    input[1] = 5
    input[2] = 6


list = [1,2,3,1,2,3]
modify(list[3:6])
print("Woud like to have: [1,2,3,4,5,6]")
print("But I got: "  + str(list))

输出:

想要:[1,2,3,4,5,6]
但是我得到了:[1,2,3,1,2,3]

最佳答案

如果可以使用 numpy,您可以使用 numpy 来完成:

import  numpy as np


def modify(input):
    input[0] = 4
    input[1] = 5
    input[2] = 6


arr = np.array([1,2,3,1,2,3])
modify(arr[3:6])
print("Would like to have: [1,2,3,4,5,6]")
print("But I got: "  + str(arr))

Would like to have: [1,2,3,4,5,6]
But I got: [1 2 3 4 5 6]

使用 basic indexing总是返回 view这是一个不拥有自己数据的数组,而是引用另一个数组的数据

根据您的用例,如果您使用的是 python3,则可能是 memeoryviewarray.array可能有用。

from array import array

arr = memoryview(array("l", [1, 2, 3, 1, 2, 3]))

print(arr.tolist())

modify(arr[3:6])

print("Woud like to have: [1,2,3,4,5,6]")
print((arr.tolist()))
[1, 2, 3, 1, 2, 3]
Woud like to have: [1,2,3,4,5,6]
[1, 2, 3, 4, 5, 6]

关于python - 如何使 Python 列表在其切片被更改时可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264792/

相关文章:

python - Django 管理员更改表单加载速度很慢

python - 如何在不使用 .pop() 或 .remove() 的情况下从项目列表中删除第一次出现的特定项目

java - 一个对象可以持有它自己的对象的数组吗

javascript - 哪些 JavaScript 数组函数正在发生变化?

python - 列表列表更改意外地反射(reflect)在子列表中

python - 康威的生命游戏没有正确计算邻居数量

python - 如何向 ObjectListView wxPython 添加仪表或进度条?

java - 使引用不可变?

python - BadKeyError : Invalid string key incorrect padding

python - 检查对象列表是否包含具有特定属性值的对象