Chapter 02. 데이터형과 데이터 구조
7. 리스트, 튜플, 사전
리스트
- 0개 이상의 요소를 갖는 시퀀스(나열)
- 요소를 추가/ 삭제 등 변경 가능 (mutable)
- 요소를 콤마(,)로 구분 / [ ] 로 감싸서 생성
- 데이터 구조 : 배열
append 메서드
- 리스트 맨 끝에 요소 추가 가능
insert 메서드
- 지정한 위치에 요소 추가 가능
- list.insert(n,'name') --> n은 위치( 위치는 0부터 시작 )
del
- 리스트 요소 삭제
- del list[n] / n은 위치( 위치는 0부터 시작 )
튜플
- 0개 이상의 요소를 갖는 시퀀스(나열)
- 요소 변경 불가능 (immutable) -- > append 메서드, insert 메서드, del 등 사용 불가
- 요소를 콤마(,)로 구분 / 요소를 ( ) 로 감싸서 생성
- 데이터 구조 : 배열
게임을 만들 때 위치정보(X좌표, Y좌표) 등은 튜플로 함께 관리하는 것이 유리함
언팩 : 하나의 튜플을 여러개의 변수에 대입하는 것
pos = (56,74)
pos_1, pos_2 = pos
print(pos_1) # 56
print(pos_2) # 74
언팩을 응용하여 변수의 값 바꿀 수 있음
x = 5
y = 3
(x,y) = (y,x)
print(x) # 3
print(y) # 5
# 파이썬에서 = 는 우변의 값을 좌변에 대입하는 것 이므로
사전
- 키와 값(value) --> "쌍"으로 이루어짐
- {키:값}으로 생성
- 콤마(,)를 이용하여 쌍을 구분
- 사전에 저장된 데이터에는 순서가 없음

시퀀스의 시퀀스
리스트나 튜플 자신을 요소로써 지정 가능
리스트 안에 튜플/ 리스트를 넣을 수 있고
튜플 안에 튜플/ 리스트를 넣을 수 있음
- list에 list append하기
a_list=[1,2,3,4]
b_list=[6,7,8]
a_list.append(b_list)
print(a_list) # [1, 2, 3, 4, [6, 7, 8]]
- 시퀀스의 시퀀스
a_list=[1,2,3,4]
b_list=[6,7,8]
a_tuple=(9,10)
b_tuple=(11,12)
data_1 = [a_list,b_list]
data_2 = (a_list,b_list)
data_3 = [a_tuple,b_tuple]
data_4 = (a_tuple,b_tuple)
print(data_1) # [[1, 2, 3, 4], [6, 7, 8]] / 리스트의 리스트
print(data_2) # ([1, 2, 3, 4], [6, 7, 8]) / 튜플의 리스트
print(data_3) # [(9, 10), (11, 12)] / 리스트의 튜플
print(data_4) # ((9, 10), (11, 12)) / 튜플의 튜플
- 표 형식의 데이터
행마다 리스트를 작성 --> 그러한 행을 또 리스트로 합하기
아래의 그림과 같이 표현 가능

data에 접근시 list[행번호][열번호]
data = [[0,0,1],[0,1,0],[1,0,0]]
print(data) # [[0, 0, 1], [0, 1, 0], [1, 0, 0]]
data[2][2] = 2
print(data) # [[0, 0, 1], [0, 1, 0], [1, 0, 2]]
8. 리스트나 튜플을 다루는데 편리한 함수
len
리스트나 튜플에 포함되는 요소 수를 반환
data = [1,2,3]
print (len(data)) # 3
copy
의도적으로 리스트를 복제할 때 사용하는 메서드
튜플에는 copy 메소드가 없음
data = [1,2,3]
b=data.copy()
print (b) # [1, 2, 3]
in
어떠한 값이 리스트나 튜플에 포함되었는지 확인할 때
값이 포함되어 있으면 True
포함되어 있지 않으면 False
data =(1,2,3)
print (2 in data) # True
print (5 in data) # False
index
데이터가 몇 번째에 저장되어 있는지 확인할 때 사용하는 메서드
0부터 시작 (첫번째 데이터 : 0)
copy 메서드와 다르게 index 메서드는 리스트/ 튜플 모두 사용 가능
data =[1,2,3]
data2 = (1,2,3)
print (data.index(1)) # 0
print (data2.index(2)) # 1
sort
리스트를 정렬하기 위한 방법
수치의 경우 오름차순, 문자의 경우 알파벳 순으로 정렬됨
- sorted 함수
- 인수로 주어진 리스트/ 튜플을 정렬해 그 복사본을 반환
- 본래 리스트의 정렬 순서는 변하지 않음
data =[1,2,3,9,5,6]
data2 = ('apple','carrot','banana','tomato','melon')
print (sorted(data)) # [1, 2, 3, 5, 6, 9]
print (sorted(data2)) # ['apple', 'banana', 'carrot', 'melon', 'tomato']
# 튜플에서 sorted 함수를 사용하면 정렬 후 리스트로 반환
print (data) # ['apple', 'banana', 'carrot', 'melon', 'tomato']
print (data2) # ('apple', 'carrot', 'banana', 'tomato', 'melon')
# sorted 함수는 원래 리스트의 정렬에 영향을 끼치지않음
- sort 메서드
- 본래 리스트를 정렬
- 튜플에서는 적용 X
data =[1,2,3,9,5,6]
print (data) # [1, 2, 3, 9, 5, 6]
data.sort()
print (data) # [1, 2, 3, 5, 6, 9]
print() : 인수로 주어진 정보를 출력
- % 연산자
- 본래 문자열 내에 % 서식을 삽입하여 이용 --> % 연산자를 실제 데이터로 변경
- %s : 문자열
- %d : 정수형
- %f : 실수형

hello = "I am %s. I am %d years old"
print (hello%('2cong',26)) # I am 2cong. I am 26 years old
- format 메서드
- 본래 문자열 내에 { } 서식을 삽입하여 이용 --> { }를 실제 데이터로 변경
- % 연산자보다 파이썬스러운 방법
- 문자열에 대해서 format 메서드 호출해 그 인수로 실제 데이터 전달

hello = "I am {}. I am {} years old"
print (hello.format('2cong',26)) # I am 2cong. I am 26 years old
다음과 같이 이용하고 { }에 번호를 기재하여 순서를 설정 할 수 있음 (번호는 0부터 시작)

hello = "I am {1}. I am {0} years old"
print (hello.format('2cong',26)) # I am 26. I am 2cong years old
9. 주석
#을 이용하여 주석을 남길 수 있음
10. 행의 줄바꿈
한 행의 길이는 어느 정도로 맞추는 것이 좋음
그러나 줄이 길어진다면 " \ " 을 삽입하여 행 줄바꿈 가능
'python > 게임으로 배우는 파이썬' 카테고리의 다른 글
게임으로 배우는 파이썬_Part 1_1 (0) | 2020.03.16 |
---|
댓글