Python 코딩도장

11~12장

Posted by 동식이 블로그 on January 7, 2019

코딩도장 python 11~12장

11장. 시퀀스 자료형 활용하기

시퀀스 자료형(sequence types)

  • 리스트, 튜플, range, 문자열처럼 값이 연속적으로 이어진 자료형을 말함
  • 공통된 동작과 기능을 제공한다
  • 시퀀스 자료형으로 만든 객체를 시퀀스 객체라고하며, 시퀀스 객체에 들어있는 각 값을 요소(element)라고 부른다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a = [0,1,2,3,4,5,6,7,8,9]
3 in a
>>> True
10 in a
>>> False
# 이처럼 시퀀스 객체 a안에 특정 값이 있는지 없는지를 in을 통해 확인가능

a = [0,1,2,3]
b = [9,8,7,6]
a + b
>>> [0,1,2,3,9,8,7,6]
# 리스트 a와 b를 더하면 두 리스트가 연결됨
# 단 range는 + 연산자로 객체를 연결할 수 없다
list(range(0, 10)) + list(range(10,20))
# 이처럼 리스트나 튜플로 형변환해서 연결해 주어야 함

문자열에 숫자 연결하기

1
2
3
4
5
6
'hello,' + 10
>>> TypeError : Can't convert 'int' object to str implicity
# 정수를 문자열로 변환할 수 없어서
# 이를 해결하기 위해 str을 사용하여 숫자를 문자열로 변환
'hello, ' + str(10)
>>> 'hello, 10'

시퀀스 객체의 요소 개수(길이)

len(시퀀스객체)

1
2
3
4
5
6
7
len(range(0, 10, 2))
>>> 5

hello = "Hello, World!"
len(hello)
>>> 13
# 문자열의 길이는 공백까지 포함

인덱스 사용하기

시퀀스객체[인덱스]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = [38, 21, 53, 62, 19]
a[0]
>>> 38
a[2]
>>> 53
a
>>>[38, 21, 53, 62, 19]
# 시퀀스 객체에 인덱스를 지정하지 않으면 해당 객체 전체를 뜻함
a[-1]
>>> 19
# 음수 인덱스는 뒤에서 첫 번째인 요소를 출력
del a[2]
# 요소 삭제
# 삭제는 리스트만 가능

슬라이스(slice)

시퀀스객체[시작인덱스:끝인덱스]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
a[0:4]
>>> [0, 10, 20, 30]
# 0~3까지 잘라서 새 리스트를 만듦
a[1:1]
>>> []
# 시작 인덱스와 끝 인덱스를 같은 숫자로 지정하면 아무것도 가져오지 않음
a[1:2]
>>> 10
a[2:8:3]
>>> [20, 50]
# 2부터 인덱스를 3씩 증가시켜 7까지 가져옴
a[:7]
# 시작을 생략해 1부터 6까지 가져옴
a[7:]
# 끝을 생략해 7부터 마지막 요소까지 가져옴
a[0:len(a)]
# len을 응용해 리스트 전체를 가져옴

slice객체 사용하기

1
2
3
range(10)[slice(4,7,2)]
>>> range(4,7,2)
# 지정된 범위만큼 잘라내서 새 객체를 만든다

12장. 딕셔너리 사용하기

딕셔너리

  • 값마다 이름을 붙여서 저장하는 방식

딕셔너리 = {키1 : 값1, 키2 : 값2}

1
lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
  • 딕셔너리 중 키가 중복되면 가장 뒤에 있는 값만 사용 -> 중복 저장 안됨
  • 딕셔너리는 문자열, 정수, 실수, 불등을 섞어 사용해도 됨
  • 단 키에는 리스트와 딕셔너리를 사용할 수 없다
1
2
3
x = {}
y = dict()
# 빈 딕셔너리 만들기

dict()로 딕셔너리 만들기

1
2
3
4
5
6
7
8
9
10
11
lux1 = dict(health=490, mana=334, melee=550, armor=18.72)
# 키 = 값 형식으로 딕셔너리 생성

lux2 = dict(zip(['health', 'mana', 'melee', 'armor'], [490, 334, 550, 18.72]))
# zip 함수로 딕셔너리 만들기

lux3 = {'healt' : 490, 'mana' : 334, }
# (키, 값)의 형식의 튜플로 딕셔너리를 만들기

lux4 = dict({'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72})  
# dict안에서 중괄호로 딕셔너리를 생성하는 방법

딕셔너리의 키에 접근

딕셔너리[키값]

1
2
3
4
5
lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
lux['healt']
>>> 490
lux
>>> 전체 출력

딕셔너리의 키에 값 할당

딕셔너리[키값] = 값

1
2
3
4
lux['health'] = 2037
# 키 'health'의 값을 2037로 변경
lux['mana_regen'] = 3.28
# 키 'mana_regen'을 추가하고 값 3.28 할당하기

딕셔너리에 키가 있는지 확인

키 in 딕셔너리

1
2
3
4
'health' in lux
>>> True
'attack_speed' in lux
>>> False

딕셔너리의 키 개수 구하기

1
2
len(lux)
>>> 4