Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 재귀함수
- numpy
- 딥러닝
- 딕셔너리
- 카카오
- 데이터사이언스 스쿨
- Python
- 아이펠
- 속성
- 제어문
- AIFFEL
- 스크랩
- 함수
- 사이킷런
- 코딩도장
- 제로베이스 데이터사이언스
- 파이썬코딩도장
- 파이썬
- 자연어처리
- TensorFlow
- AI
- 기사
- NLP
- 후기
- 클래스
- 데이터사이언티스트
- 추천시스템
- 머신러닝
- Set
- 데이터분석
Archives
- Today
- Total
뮤트 개발일지
[파이썬 코딩 도장] Unit 23. 2차원 리스트 사용하기 본문
2차원 리스트를 만들고 요소에 접근하기
만들기
>>> a = [[10, 20], [30, 40], [50, 60]]
a = [[10, 20],
[30, 40],
[50, 60] ]
세로로 만들어서 더 보기 쉽게 할 수도 있다.
접근하기
>>> 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
톱니형 리스트
가로 크기가 불규칙한 리스트를 만들 수 있다.
a = [[10, 20],
[500, 600, 700],
[9],
[30, 40],
[8],
[800, 900, 1000]]
2차원 튜플
a = ((10, 20), (30, 40), (50, 60)) # 튜플 안에 튜플을 넣은 2차원 튜플
b = ([10, 20], [30, 40], [50, 60]) # 튜플 안에 리스트를 넣음
c = [(10, 20), (30, 40), (50, 60)] # 리스트 안에 튜플을 넣음
튜플은 내용을 변경할 수 없기 때문에
a는 안쪽과 바깥쪽 모두 요소 변경 불가
b는 안쪽 리스트만 요소 변경 가능
c는 바깥쪽 리스트만 요소 변경 가능
알아보기 쉽게 출력하기
pprint를 import하여 사용
>>> from pprint import pprint
>>> pprint(a, indent=4, width=20)
[ [10, 20],
[30, 40],
[50, 60]]
indent: 들여쓰기 칸 수, width: 가로 폭
반복문으로 2차원 리스트의 요소를 모두 출력하기
for 반복문 한 번 사용하기
>>> a = [[10, 20], [30, 40], [50, 60]]
>>> for x, y in a: # 리스트의 가로 한 줄(안쪽 리스트)에서 요소 두 개를 꺼냄
... print(x, y)
...
10 20
30 40
50 60
for 반복문 두 번 사용하기
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와 range 사용하기
a = [[10, 20], [30, 40], [50, 60]]
for i in range(len(a)): # 세로 크기
for j in range(len(a[i])): # 가로 크기
print(a[i][j], end=' ')
print()
10 20
30 40
50 60
인덱스 00 01, 10 11, 20 21 출력
for i in range(len(a)): # 세로 크기
for j in range(len(a[i])): # 가로 크기
while 반복문 한 번 사용하기
a = [[10, 20], [30, 40], [50, 60]]
i = 0
while i < len(a): # 반복할 때 리스트의 크기 활용(세로 크기)
x, y = a[i] # 요소 두 개를 한꺼번에 가져오기
print(x, y)
i += 1 # 인덱스를 1 증가시킴
10 20
30 40
50 60
while 반복문 두 번 사용하기
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 증가시킴
10 20
30 40
50 60
반복문으로 리스트 만들기
for 반복문으로 1차원 리스트 만들기
a = [] # 빈 리스트 생성
for i in range(10):
a.append(0) # append로 요소 추가
print(a)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for 반복문으로 2차원 리스트 만들기
a = [] # 빈 리스트 생성
for i in range(3):
line = [] # 안쪽 리스트로 사용할 빈 리스트 생성
for j in range(2):
line.append(0) # 안쪽 리스트에 0 추가
a.append(line) # 전체 리스트에 안쪽 리스트를 추가
print(a)
[[0, 0], [0, 0], [0, 0]]
리스트 표현식으로 2차원 리스트 만들기
>>> a = [[0 for j in range(2)] for i in range(3)]
>>> a
[[0, 0], [0, 0], [0, 0]]
>>> a = [[0] * 2 for i in range(3)]
>>> a
[[0, 0], [0, 0], [0, 0]]
리스트 [0]에 *2를 하면 [0, 0]이 된다.
톱니형 리스트 만들기
a = [3, 1, 3, 2, 5] # 가로 크기를 저장한 리스트
b = [] # 빈 리스트 생성
for i in a: # 가로 크기를 저장한 리스트로 반복
line = [] # 안쪽 리스트로 사용할 빈 리스트 생성
for j in range(i): # 리스트 a에 저장된 가로 크기만큼 반복
line.append(0)
b.append(line) # 리스트 b에 안쪽 리스트를 추가
print(b)
[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]
>>> a = [[0] * i for i in [3, 1, 3, 2, 5]]
>>> a
[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]
sorted로 2차원 리스트 정렬하기
students = [
['john', 'C', 19],
['maria', 'A', 25],
['andrew', 'B', 7]
]
print(sorted(students, key=lambda student: student[1])) # 안쪽 리스트의 인덱스 1을 기준으로 정렬
print(sorted(students, key=lambda student: student[2])) # 안쪽 리스트의 인덱스 2를 기준으로 정렬
[['maria', 'A', 25], ['andrew', 'B', 7], ['john', 'C', 19]]
[['andrew', 'B', 7], ['john', 'C', 19], ['maria', 'A', 25]]
2차원 리스트의 할당과 복사 알아보기
>>> a = [[10, 20], [30, 40]]
>>> b = a
>>> b[0][0] = 500
>>> a
[[500, 20], [30, 40]]
>>> b
[[500, 20], [30, 40]]
copy
>>> a = [[10, 20], [30, 40]]
>>> b = a.copy()
>>> b[0][0] = 500
>>> a
[[500, 20], [30, 40]]
>>> b
[[500, 20], [30, 40]]
a, b모두 그대로인 것을 확인할 수 있다.
완전한 복사를 하려면 copy 모듈의 deepcopy를 해야 한다.
>>> a = [[10, 20], [30, 40]]
>>> import copy # copy 모듈을 가져옴
>>> b = copy.deepcopy(a) # copy.deepcopy 함수를 사용하여 깊은 복사
>>> b[0][0] = 500
>>> a
[[10, 20], [30, 40]]
>>> b
[[500, 20], [30, 40]]
'코딩도장' 카테고리의 다른 글
[파이썬 코딩 도장] Unit 29. 함수 사용하기 (0) | 2022.01.05 |
---|---|
[파이썬 코딩 도장] Unit 26. 세트 사용하기 (0) | 2022.01.05 |
[파이썬 코딩 도장] Unit 45. 모듈과 패키지 만들기 (0) | 2022.01.05 |
[파이썬 코딩 도장] Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기 (0) | 2022.01.03 |
[파이썬 코딩 도장] Unit 34. 클래스 사용하기 (0) | 2022.01.03 |