내가 만들고 싶다 어레이입니다 파이썬 (2.7) 를 사용하여 다음과 같은 3D
distance[i][j][k]
난 가봤다네 변수 크기 및 크기가 어레이입니다 해야 합니다. ( n )
전화했는데 사용:
distance = [[[]*n]*n]
하지만 그 didn& # 39, t 작동합니까 것으로 보인다.
아무 생각 없어? 정말 감사합니다!
편집: 만 사용할 수 있어 가히 디푸르트 라이브러리 및 방법 (즉, [[0] n] n) 습관 작동합니까 링크됨 있기 때문에 같은 포인터입니다 그리고 데릭쉐퍼드와 모든 값은 개별
EDIT2: 이미 오토메이티드 해결할 수 있습니다.
[목록 번역] [1] 사용해야 합니다.
>>> 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]]]
[1]: http://docs.python.org/tutorial/datastructures.html # 지능형 목록
그냥 '의 설계됩니다 누마피콜라이 엔드입니다 사례:
numpy.zeros((i,j,k))
, j 부여하느뇨 배열입니다 치수에는 제로는 가득 차 있습니다.
어떤 따라 필요한 [누마피] (http://pypi.python.org/pypi/numpy) 요구에 맞는 최적의 라이브러리란 수 있습니다.
옳은 길을 약간만이라도
[[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]
(어떤 you& # 39, re trying to do 기록할 경우 (네스 스노) 등
[[[0]*n]*n]*n
그러나 이는 틀린 http://schmidt. devlib. @Adaman 주석문입니다 이유).
d3 = [[[0 for col in range(4)]for row in range(4)] for x in range(6)]
d3[1][2][1] = 144
d3[4][3][0] = 3.12
for x in range(len(d3)):
print d3[x]
[[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, 144, 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, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [3.12, 0, 0, 0]]
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
"""
Create 3D array for given dimensions - (x, y, z)
@author: Naimish Agarwal
"""
def three_d_array(value, *dim):
"""
Create 3D-array
:param dim: a tuple of dimensions - (x, y, z)
:param value: value with which 3D-array is to be filled
:return: 3D-array
"""
return [[[value for _ in xrange(dim[2])] for _ in xrange(dim[1])] for _ in xrange(dim[0])]
if __name__ == "__main__":
array = three_d_array(False, *(2, 3, 1))
x = len(array)
y = len(array[0])
z = len(array[0][0])
print x, y, z
array[0][0][0] = True
array[1][1][0] = True
print array
사용을 선호하지만 누마피. 드라이 '에 대해' 다차원 배열입니다.