在Python3中,如何创建一个数值相等但独立于其他任意级别嵌套列表的任意级别嵌套列表

2024-06-17 08:55:21 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个项目我必须在python3中实现。但是我遇到了如下的问题。你知道吗

对于像l=[a,b,c]这样的单级列表,a、b、c是不可iterable的,如果要在内容中复制,只能使用n=l[:],但是当有多级嵌套时,其a、b、c是可iterable的,即使‘pointer’a、b、c是新变量,但它们的引用仍然指向原来的位置。你知道吗

未知级别的嵌套列表作为参数传递给函数。在这个函数中会对参数进行一些操作,但是我不想对这个函数的调用者中的原始list对象做任何更改。所以我想把这个对象复制到一个新的对象中。你知道吗

为了便于阅读,我尝试了一些方法,我希望它可以工作如下:

>>> a=[1,2,3]
>>> b=[a,a,a]
>>> b
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> a[1]=10
>>> b
[[1, 10, 3], [1, 10, 3], [1, 10, 3]]
>>> c=list(b)
>>> c
[[1, 10, 3], [1, 10, 3], [1, 10, 3]]
>>> a[1]=20
>>> c
[[1, 20, 3], [1, 20, 3], [1, 20, 3]]
>>> d=b[:][:]
>>> d
[[1, 20, 3], [1, 20, 3], [1, 20, 3]]
>>> a[1]=30
>>> c
[[1, 30, 3], [1, 30, 3], [1, 30, 3]]
>>> d
[[1, 30, 3], [1, 30, 3], [1, 30, 3]]

但所有的尝试都失败了。你知道吗

有没有人有一个简单而有效的方法来创造一个新的平等但独立的对象?你知道吗


Tags: 项目对象方法函数内容列表参数级别