-
TIL.6 2차원 list(행, 열, 표)TIL 2020. 10. 14. 22:22728x90
## 2차원 리스트란 table 2 x 2 와 같은 표를 생각하면 댐
## 가로, 행, row
## 세로, 열, column
a = [[10, 20], [30, 40], [50, 60]]
:: # [[10, 20], [30, 40], [50, 60]]
## 리스트 안에 리스트를 넣어 2차원 리스트를 만들 수 있다.
## 가독성을 좋게 하기 위해 세로로 작성하기도 한다.
b = [[10, 20],
[30, 40],
[50, 60]]
:: 동일
print(b[0][1]) # b 리스트의 0행 1열 값 == 20
b[0][1] = 1000
print(b[0][1]) # b 리스트의 0행 1열 값 == 1000
a = [[10, 20], [30, 40], [50, 60]]
a[0] [0] # 세로 인덱스 0, 가로 인덱스 0인 요소 출력
10
a[1][1] # 세로 인덱스 1, 가로 인덱스 1인 요소 출력
40
a[2][1] # 세로 인덱스 2, 가로 인덱스 0인 요소 출력
60
a[0][1] = 1000 # 세로 인덱스 0, 가로 인덱스 1인 요소에 값 할당
a[0][1]
1000
# 리스트[세로인덱스][가로인덱스]
# 리스트[세로인덱스][가로인덱스] = 값
# 톱니형 리스트 // 2차원 튜플 // 2차원 리스트 알아보기 쉽게 출력하는 법
## 톱니형 리스트
리스트 a는 가로 크기(행의 요소 개수) 가 제각각,
이런 리스트는 요소가 배치된 모양이 톱니처럼 생겼다고 하여 톱니형 리스트라고 부른다.
a = [[10, 20],
[500, 600, 700],
[9],
[30, 40],
[8],
[800, 900, 1000]]
톱니형 리스트는 다음과 같이 append 메서드 등을 사용하여 동적으로 생성할 수 있음.
##2차원 tuple
튜플 = ((값, 값), (값, 값), (값, 값))
튜플 = ([값, 값], [값, 값], [값, 값])
리스트 = [(값, 값), (값, 값), (값, 값)]
# 기본적으로 tuple은 내용을 변경할 수 없으므로
a 는 안쪽, 바깥쪽 모두 요소 변경 불가.
b 는 안쪽 요소만 변경 가능
c 는 바깥쪽 리스트만 변경 가능하다
## 2차원 리스트 알아보기 쉽게 출력하는 법
pprint 모듈의 pprint 함수를 이용하면 가능함
## 2차원 리스트 모든 요소 출력하기
a = [[10, 20], [30, 40], [50, 60]]
for x, y in a: # 리스트의 가로 한 줄(안쪽 리스트)에서 요소 두 개를 꺼냄
print(x, y)
# 10 20
# 30 40
# 50 60
## for 반복문 1번 사용한 방법
a = [[10, 20], [30, 40], [50, 60]]
for i in a: # a에서 안쪽 리스트를 꺼냄
for j in i: # 안쪽 리스트에서 요소를 하나씩 꺼냄
print(j, end=' ')
print()
# 10 20
# 30 40
# 50 60
## for 반복문 2번 사용한 방법
## a에서 안쪽 리스트를 꺼낼때 10 ,20 등의 요소 개별값이 아닌 [리스트] 기준을 하나로 친다.
## 10 다음 20이 나오는게 아닌 [10, 20]를 하나로 친다.
## i는 처음 [10, 20] 그다음 j 는 [10, 20]에서 하나씩 요소를 꺼내 쓴다.
## 2차원 리스트의 요소를 인덱스로 접근하느 방법
a = [[10, 20], [30, 40], [50, 60]]
for i in range(len(a)): # 세로 크기 (len(a) : 행의 갯수와도 같다)
for j in range(len(a[i])): # 가로 크기 (len(a[i])) : 열의 갯수와도 같다)
print(a[i][j], end=' ')
print()
# 10 20
# 30 40
# 50 60
## for 반복문 2번, range 사용한 방법
## 주의할 점!! len 으로 2차원 리스트 a의 크기를 구하면 리스트 안의 모든 요소의 개수가 아닌 안쪽 리스트의 개수(세로크기)가 나온다는 점!!
## [10, 20]이 한꺼번에 나온다는 뜻
#### 2차원 리스트를 접근할때는 리스트[세로인덱스][가로인덱스] 형식으로 접근해야함 ####
a = [[10, 20], [30, 40], [50, 60]]
i = 0
while i < len(a): # 반복할 때 리스트의 크기 활용(세로 크기)
x, y = a[i] # 요소 두 개를 한꺼번에 가져오기
print(x, y)
i += 1 # 인덱스를 1 증가시킴
## while 반복문을 1번 사용한 방법
## x, y = a[i]와 같이, 변수 두 개를 지정해주면 한 줄(안쪽리스트)에서 두 개를 한꺼번에 가져올 수 있다.
a = [[10, 20], [30, 40], [50, 60]]
i = 0
while i < len(a): # 세로 크기
j = 0
while j < len(a[i]): # 가로 크기
print(a[i][j], end=' ')
j += 1 # 가로 인덱스를 1 증가시킴
print()
i += 1 # 세로 인덱스를 1 증가시킴
## while 반복문을 2번 사용한 방법
#### 2차원 리스트를 접근할때는 리스트[세로인덱스][가로인덱스] 형식으로 접근해야함을 잊지말자####
i = 0
while i < len(a):
j = 0
while j < len(a[i]):
print(a[i][j], end=' ')
j += 1
i += 1 ## 잘못된 방법 error
print()
## i += 1 위치가 error 인 경우이다.
## 0행 0열 출력 후, 0행 1열이 아닌 1행 1열을 출력해버리게 된다.
728x90'TIL' 카테고리의 다른 글
TIL.8 웹 크롤링(Python)_네이버 실시간 검색어 가져오기 (0) 2020.10.16 TIL.7 2차원 리스트_2 (0) 2020.10.15 TIL. 5 list 함수 응용편_3 (0) 2020.10.13 TIL.4+0.5 list 함수 응용편_2 (0) 2020.10.12 TIL.4 list 함수 응용편 (0) 2020.10.12