본문 바로가기
파이썬

파이썬 Python을 사용하여 3D 배열 만들기

by º기록 2021. 2. 16.
반응형

다음과 같이 사용하기 위해 Python (2.7)에서 3D 배열을 만들고 싶습니다.

distance[i][j][k]

그리고 배열의 크기는 내가 가지고있는 변수의 크기 여야합니다. (n n n)

나는 사용해 보았다 :

distance = [[[]*n]*n]

그러나 그것은 작동하지 않는 것 같습니다.

기본 라이브러리 만 사용할 수 있으며 곱하는 방법 (즉, [[0] * n] * n )은 동일한 포인터에 연결되어 있고 모든 값이 필요하기 때문에 작동하지 않습니다. 개별적으로

 

해결 방법

 


>>> import pprint
>>> n = 3
>>> distance = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)]
>>> pprint.pprint(distance)
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
>>> distance[0][1]
[0, 0, 0]
>>> distance[0][1][2]
0

시도한 것과 비슷한 문으로 데이터 구조를 생성 할 수 있었지만 내부 목록이 참조로 복사되기 때문에 부작용이 있었을 것입니다.

>>> distance=[[[0]*n]*n]*n
>>> pprint.pprint(distance)
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
>>> distance[0][0][0] = 1
>>> pprint.pprint(distance)
[[[1, 0, 0], [1, 0, 0], [1, 0, 0]],
 [[1, 0, 0], [1, 0, 0], [1, 0, 0]],
 [[1, 0, 0], [1, 0, 0], [1, 0, 0]]]

 

참조 페이지 https://stackoverflow.com/questions/10668341

 

 

반응형

댓글