Python有没有类似Java的System.arraycopy?

Jef*_*ton 1 python java

Python有没有类似Java的System.arraycopy?我不想只是复制引用(浅拷贝),也不想切片(深拷贝w/new ref).我想保留目标的引用(因为我有多个变量指向同一个列表)并将单个单元格从源复制到目标.完全像Java的arraycopy.到目前为止,我在Python中找到的唯一方法就是编写自己的.在Java中,使用System.arraycopy比滚动自己更高效,不确定Python是否就是这种情况.

Pet*_*per 8

如果我遵循所描述的行为,切片分配是Pythonic的方法:

foo = range(10)
bar = foo
baz = range(10, 0, -1)
foo[0:4] = baz[0:4]

>>> foo
[10, 9, 8, 7, 4, 5, 6, 7, 8, 9]
>>> bar
[10, 9, 8, 7, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

如果源包含对象引用,则会将对相同对象的引用分配到目标中 - 如果要深度复制源数据,我认为您必须执行以下操作:

foo[0:4] = [copy.deepcopy(x) for x in baz[0:4]]
Run Code Online (Sandbox Code Playgroud)