gpt4 book ai didi

python - 为什么 python 在这里复制列表?

转载 作者:行者123 更新时间:2023-12-01 03:01:52 24 4
gpt4 key购买 nike

我有一个函数,应该表示“3D”数组中的一个立方体,但其中一层中间有一个正方形。 IE。

def cube(n):
list1 = []
list2 = []
list3 = []


for a in range(n+2):
list3.append(str('c'))
for b in range(n+2):
list2.append(list(list3))
for c in range(n+2):
list1.append(list(list2))


for d in range(1,n+1):
for e in range(1,n+1):
list1[0][d][e]='h'
return list1

pprint.pprint(cube(2))

>>>

[[['c', 'c', 'c', 'c'],
['c', 'h', 'h', 'c'],
['c', 'h', 'h', 'c'],
['c', 'c', 'c', 'c']],

[['c', 'c', 'c', 'c'],
['c', 'h', 'h', 'c'],
['c', 'h', 'h', 'c'],
['c', 'c', 'c', 'c']],

[['c', 'c', 'c', 'c'],
['c', 'h', 'h', 'c'],
['c', 'h', 'h', 'c'],
['c', 'c', 'c', 'c']],

[['c', 'c', 'c', 'c'],
['c', 'h', 'h', 'c'],
['c', 'h', 'h', 'c'],
['c', 'c', 'c', 'c']]]

但我想要这个:

>>>

[[['c', 'c', 'c', 'c'],
['c', 'h', 'h', 'c'],
['c', 'h', 'h', 'c'],
['c', 'c', 'c', 'c']],

[['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c']],

[['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c']],

[['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c'],
['c', 'c', 'c', 'c']]]

仅第一层中的 h。为什么Python要这样做?

最佳答案

这里有一个最小的改变来获得你想要的。首先添加

from copy import deepcopy

然后替换:

list1.append(list(list2))

与:

list1.append(deepcopy(list2))

关于python - 为什么 python 在这里复制列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43728242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com