욤미의 개발일지

[Python] 2차원 리스트 - 인덱싱, 선언 방법 본문

Python

[Python] 2차원 리스트 - 인덱싱, 선언 방법

욤미 2021. 8. 9. 19:35

[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의 자세한 내용은 아래 참고!

 

[Python] Split - 문자열을 리스트로 만들기

[Python] Split - 문자열을 리스트로 만들기 split함수는 리스트를 특정 구분자로 구분하여 문자열로 변환해주는 join 함수와는 반대의 기능을 한다고 할 수 있다. 문자열을 일정한 규칙으로 잘라

yommi11.tistory.com

 

방법 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