파이썬 2중 리스트 인덱스 값 가져오기 질문
조회수 2189회
아래 에 puzzle 리스트에서 n 에 입력되는 값 의 인덱스를 찾아내고 싶은데 첫 번째 리스트의 1,2,3,4 이후에는 에러가 자꾸 발생합니다. index = puzzle[i].index(n) 이부분이 이상한 것 같은데 어떻게 고쳐야 할지 막막합니다.
그리고 못찾으면 return 값을 None, 찾으면 index 값을 반환하고 싶은데 어떻게 해야 할까요?
puzzle = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
def get_index(puzzle, n):
for i in range(len(puzzle)):
index = puzzle[i].index(n)
return index
get_index(puzzle, 3)
3 답변
-
puzzle = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] def get_index(puzzle, n): for idx1, i in enumerate(puzzle): for idx2, j in enumerate(i): if j == n: return idx1, idx2 return None get_index(puzzle, 10) #(2, 1) get_index(puzzle, 100) #None
방법이 많아서 생각하시는대로 해보시는게 답인거같습니다
혹시 나중에 참고하시라고... 올립니다
-
꽤 훌륭한 코드를 짰네요. 그렇게 어렵지 않아요. 지금 상태의 함수에서 찾아낸
index
는 사실 정답은 아니고, 찾고자 하는 2차원 인덱스 중에서 두번째 인덱스죠.첫번째 인덱스는 뭔가요?
i
잖아요. 그래서, 찾았을 경우에는(i, index)
를 리턴하면 될 거고요.지금 큰 문제는 3 같이 첫번째 줄에 있는 것들은 잘 찾는데, 7같은 것은 에러가 발생하는 문제죠.
첫번째 줄(즉,
puzzle[0]
)에 7이 존재하지 않기 때문에 발생하는 에러이고, 이건if n in puzzle[i]
조건만 미리 검사해 보면 피해갈 수 있는 에러입니다.OK?
-
puzzle = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[3,14,15,16]] def get_index(puzzle, n): indice = [] for i, puz in enumerate(puzzle): if n in puz: indice.append(i) return indice get_index(puzzle, 3) # [0, 3]
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력