나는 "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. 파이썬이 왜 이런 일을합니까?
원하는 것을 얻기위한 최소한의 변경 사항이 있습니다. 먼저
from copy import deepcopy
그런 다음 다음을 교체하십시오.
list1.append(list(list2))
와:
list1.append(deepcopy(list2))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다