Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python是否有类似Java';s System.arraycopy?_Java_Python - Fatal编程技术网

Python是否有类似Java';s System.arraycopy?

Python是否有类似Java';s System.arraycopy?,java,python,Java,Python,Python是否有类似于Java的System.arraycopy的功能?我不想只复制引用(浅拷贝),也不想切片它(带新引用的深拷贝)。我希望保留目标的引用(因为我有多个变量指向同一个列表),并将单个单元格从源复制到目标。与Java的arraycopy一模一样。到目前为止,我能找到的用Python实现这一点的唯一方法是编写我自己的。在Java中,使用System.arraycopy比使用自己的更有效,不确定Python中是否是这样。如果我遵循所描述的行为,切片分配是Python的方法: foo

Python是否有类似于Java的System.arraycopy的功能?我不想只复制引用(浅拷贝),也不想切片它(带新引用的深拷贝)。我希望保留目标的引用(因为我有多个变量指向同一个列表),并将单个单元格从源复制到目标。与Java的arraycopy一模一样。到目前为止,我能找到的用Python实现这一点的唯一方法是编写我自己的。在Java中,使用System.arraycopy比使用自己的更有效,不确定Python中是否是这样。

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

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

foo[0:4] = [copy.deepcopy(x) for x in baz[0:4]]

更新:Peter DeGlopper的方法更好。试试那个

对不起,这是您得到的最好的:

def arrayCopy(src, srcPos, dest, destPos, length):
    for i in range(length):
        dest[i + destPos] = src[i + srcPos]
def array_copy(src: bytes, src_pos: int, dest: bytes, dest_pos: int, length: int) -> bytes:
return dest[:dest_pos]+src[src_pos:length]+dest[dest_pos+length:]