2D 배열 클래스를 만들려고하고 있는데 문제가 생겼습니다. 필자가 알아낼 수있는 가장 좋은 방법은 get/setitem을 인덱스의 튜플 (tuple)로 전달하고 함수에서이를 언 패킹 (unpack)하도록하는 것입니다. 불행하게도하지만, 구현은 정말 지저분한 같습니다2 차원 배열을 사용하는 더 깨끗한 방법이 있습니까?
class DDArray:
data = [9,8,7,6,5,4,3,2,1,0]
def __getitem__ (self, index):
return (self.data [index [0]], self.data [index [1]])
def __setitem__ (self, index, value):
self.data [index [0]] = value
self.data [index [1]] = value
test = DDArray()
print (test [(1,2)])
test [(1, 2)] = 120
print (test [1, 2])
난 그냥 더 많은 매개 변수를 받아 가지고 시도
:
class DDArray:
data = [9,8,7,6,5,4,3,2,1,0]
def __getitem__ (self, index1, index2):
return (self.data [index1], self.data [index2])
def __setitem__ (self, index1, index2, value):
self.data [index1] = value
self.data [index2] = value
test = DDArray()
print (test [1, 2])
test [1, 2] = 120
print (test [1, 2])
하지만 내가 충분히 인수를 전달 아니에요 말해 이상한 유형의 오류가 발생을 (나는 첨자 연산자의 내부에 쉼표가 있더라도 1 개의 인수로 간주됩니다.)
은 (예, 알아요, 위 클래스는 실제로는 2 차원 배열이 아닌. 내가 실제로 2D를 만들기로 이동하기 전에 운영자가 파악하고 싶었.)
가하는 표준 방법이 있나요 좀 더 깔끔하게 보이지? 감사합니다.
2 차원 배열이 이미 기본적으로 지원되므로 왜 자신의 2 차원 배열을 작성 하시겠습니까? –
@ Harry Shankar 문서를 빠르게 검색하고 a = [] []을 시도했지만 구문 오류가 발생했습니다. 나는 문서를 열심히 보게 될 것이다. 감사합니다 – Carcigenicate
아. 사용할 수 있기 전에 목록 목록으로 초기화해야합니다 (a = [[]]) – Carcigenicate