1
私は "3D"配列から立方体を表現するはずの機能を持っていますが、1つのレイヤーは真ん中に正方形を持っています。 I.なぜpythonでリストをコピーしていますか?
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']]]
第1層のみで時間。なぜPythonはこれをやっているのですか?
を明示的にリストをコピーしている.... –
'リスト(リスト1)は'コピーを返します。 –
さらに、 'list(alist)'は_shallow_コピーを作成します。必要な動作には "深い"コピーが必要です。 –