Python 如何从列表中复制某些元素,使其不会';不影响复制列表中元素的值

Python 如何从列表中复制某些元素,使其不会';不影响复制列表中元素的值,python,Python,我想做的是根据某些条件将一个列表中的某些元素复制到另一个列表中,然后更改原始列表 arr = [[1,0,4],[1,2,65],[2,3,56],[11,14,34]] brr = [] for x in range(0,len(arr)): if arr[x][1] < 10: brr.append(arr[x]) arr[x][1] = 1000 print(brr) arr=[[1,0,4]、[1,2,65]、[2,3,56]、[11,1

我想做的是根据某些条件将一个列表中的某些元素复制到另一个列表中,然后更改原始列表

arr = [[1,0,4],[1,2,65],[2,3,56],[11,14,34]]
brr = []

for x in range(0,len(arr)):
    if arr[x][1] < 10:
        brr.append(arr[x])
        arr[x][1] = 1000
print(brr)
arr=[[1,0,4]、[1,2,65]、[2,3,56]、[11,14,34]]
brr=[]
对于范围(0,len(arr))内的x:
如果arr[x][1]<10:
br.append(arr[x])
arr[x][1]=1000
打印(brr)
O/p:

[1,1000,4],[1,1000,65],[2,1000,56]]


在上面的示例中,我想用中间元素复制所有列表您应该从要复制的arr中创建每个(内部)列表的深度副本。一种方法(最短的写入方式,因为有很多:检查)是通过切片:

翻译成你的代码,你应该替换

brr.append(arr[x])

brr.append(arr[x][:])

注意:如果你想成为通用的/可伸缩的,你应该选择
copy.deepcopy
,因为如果
arr[x]
的元素之一本身就是一个列表(目前不是这种情况),它也会起作用。

这里有另一种复制列表的方法,还有一种更具python风格的迭代列表的方法

arr = [[1, 0, 4], [1, 2, 65], [2, 3, 56], [11, 14, 34]]
brr = []

for x in arr:
    if x[1] < 10:
        brr.append(list(x))
        x[1] = 1000
print(brr)
# [[1, 0, 4], [1, 2, 65], [2, 3, 56]]
arr=[[1,0,4]、[1,2,65]、[2,3,56]、[11,14,34]]
brr=[]
对于arr中的x:
如果x[1]<10:
br.追加(列表(x))
x[1]=1000
打印(brr)
# [[1, 0, 4], [1, 2, 65], [2, 3, 56]]

deepcopy
不接受参数吗?您是否也像
copy.deepcopy()
那样调用它?列表是否有
deepcopy
fn?可能有重复的
arr = [[1, 0, 4], [1, 2, 65], [2, 3, 56], [11, 14, 34]]
brr = []

for x in arr:
    if x[1] < 10:
        brr.append(list(x))
        x[1] = 1000
print(brr)
# [[1, 0, 4], [1, 2, 65], [2, 3, 56]]