욤미의 개발일지
[Python] 2차원 리스트 - 인덱싱, 선언 방법 본문
[Python] 2차원 리스트 - 인덱싱, 선언하는 방법
리스트 형에서는 여러 데이터를 2차원 행렬 구조(테이블 형태)로 저장할 수도 있다.
다음과 같이 2차원 리스트를 선언할 수 있는데, 아래 예시의 경우 2차원 리스트가 3행, 4열로 데이터가 구조화 되어있다고 볼 수 있다.
e = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
# e = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] 이렇게 선언해도 됨
print(e[1]) # [5, 6, 7, 8], 리스트 e에 인덱스 1에 위치한 값
print(e[0][3]) # 4 #0행(1), 3열(4)
코딩 테스트에서 2차원 리스트 선언하는 방법
코딩 테스트 문제를 풀다보면 2차원 리스트의 행, 열 개수를 입력받고 원소를 입력받아서 리스트를 만들어야하는 경우가 있는데 이때 사용하는 방법이다. 여기서 n은 행 개수, m은 열 개수라고 볼 수 있다.
방법 1.
n, m = map(int, input().split()) # n = 행 개수 m = 열 개수
graph1 = []
for i in range(n):
graph1.append(list(map(int, input()))) # 입력에 띄어쓰기가 없는 경우
방법 2.
n, m = map(int, input().split())
graph2 = []
graph2 = [list(map(int, input())) for _ in range(n)] # 입력에 띄어쓰기가 있는 경우
여기서 주의해야할 점은 'input()'은 입력에 띄어쓰기가 없는 경우에 사용할 수 있다는 것이다.
예를 들어, n=3, m=5로 3행 5열의 데이터를 입력하면 다음과 같은 출력 결과를 얻을 수 있다.
만일 위의 코드에 띄어쓰기가 있는 입력을 넣게 되면 다음과같이 에러가 나는 것을 확인할 수 있다.
입력에 띄어쓰기가 있다면 다음의 코드를 사용해야한다. 위의 코드와 거의 동일한데, 'input()'뒤에 문자열을 나눠주는 '.split()'을 붙여주기만 하면된다.
split의 자세한 내용은 아래 참고!
방법 1.
n, m = map(int, input().split()) # n = 행 개수 m = 열 개수
graph1 = []
for i in range(n):
graph1.append(list(map(int, input().split()))) # 입력에 띄어쓰기가 있는 경우
방법 2.
n, m = map(int, input().split())
graph2 = []
graph2 = [list(map(int, input().split())) for _ in range(n)] # 입력에 띄어쓰기가 있는 경우
.split()이 있는 코드에 띄어쓰기가 없는 입력을 입력하게되면 한 줄의 입력이 하나의 숫자로 인식되어 하나의 요소로 리스트에 들어가게 되고 다음과 같은 결과를 얻을 수 있다.
728x90
'Python' 카테고리의 다른 글
[Python] Join - 리스트를 문자열로 만들기 (0) | 2022.09.23 |
---|---|
[Python] 2차원 리스트 90도 회전 (1) | 2022.09.23 |
[Python] 문자열 자료형 (0) | 2021.08.09 |
[Python] Packing & Unpacking (0) | 2021.07.31 |
[Python] 리스트 자료형 (0) | 2021.06.21 |
Comments