Sequence Date Type인 class range
list나 tuple처럼 데이터를 가지고 있는 것이 아닌,
영역에 대한 의미만 저장하기 때문에 적은 메모리 공간으로 많은 데이터를 표현할 수 있음
a = range(10) = range(0, 10, 1) : (inclusive, exclusive, range)
range도 시퀀스 자료형이기 때문에 indexing, slicing 가능(but 원본의 type을 유지함)
Text Sequence Type인 class string
in 연산자의 반대는 not in
.upper() 문자열을 대문자로 전환함
.strip() 문자열의 앞뒤 공백을 제거함
.replace() 문자열 중 일부를 다른 문자열로 대체함
a = range(10, 50, 1)
print(a[1], a[5:10], 9 not in a) # 11 range(15, 20) True
b = ' hello world '
print(b.upper(), len(b), b.strip()) # HELLO WORLD 17 hello world
c = b.replace('world', 'jiyeon')
print(c.strip()) # hello jiyeon
.format() {}로 구분된 치환 필드를 해당 문자열의 값으로 돌려줌
num_banana = 10
num_apple = 2
d = '나는 바나나를 {}개 가지고 있고 사과를 {}개 가지고 있어요!'
result = d.format(num_banana, num_apple)
print(result) # 나는 바나나를 10개 가지고 있고 사과를 2개 가지고 있어요!
Mapping Type인 class dictionary
key 값에 정수 넣을 수 있음
key는 변할 수 없는 자료형이기 때문에 list는 사용 불가, tuple은 사용 가능
.keys() 딕셔너리의 모든 key 값을 조회
.values() 딕셔너리의 모든 value 값을 조회
.items() 딕셔너리의 모든 key·value 값을 튜플로 만들어서 리스트로 보여줌
.clear() 몽땅 제거
person = {'name':'홍길동', 'age':'25'}
e = '나는 ' + person['name'] + '이고 나이는 ' + person['age'] + '이에요.'
print(e) # 나는 홍길동이고 나이는 25이에요.
print(person.keys(), person.values(), person.items())
# dict_keys(['name', 'age']) dict_values(['홍길동', '25']) dict_items([('name', '홍길동'), ('age', '25')])
print(person.clear()) # None
Set Type인 class set
여러 개의 데이터를 저장할 수 있는 집합 자료구조(주머니)
순서 없음. key 없이 value만 저장함. 중복 허용하지 않음, {} 사용, 합집합 '|', 교집합 '&', 차집합 '-'
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
result1 = a | b; result2 = a & b; result3 = a - b;
print(result1, result2, result3)
# {1, 2, 3, 4, 5, 6, 7} {3, 4, 5} {1, 2}
list, tuple을 이용해서 set을 만들 수 있음
.add() 세트에 숫자, 문자, 튜플의 요소 하나만 추가
.update() 세트에 리스트 형식으로 요소 여러 개 추가
.remove() 특정 요소 제거
a = {1, 2, 3, 4, 5}
b = set([1, 2, 3, 4, 5])
c = set((1, 2, 3, 4, 5))
print(type(a), type(b), type(c)) # <class 'set'>
a.add(6); b.update(range(6, 11), '끝'); c.remove(3)
print(a, b, c)
# {1, 2, 3, 4, 5, 6} {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '끝'} {1, 2, 4, 5}
Boolean Type인 class bool
빈 문자열(''), 빈 리스트[], 빈 튜플(), 빈 딕셔너리{}, 숫자 0, None은 False로 간주됨
print(bool(''), bool([]), bool(()), bool({}), bool(0), bool(None))
# False False False False False False
프로젝트 오일러 반복문, 조건문
a = 0
for i in range(1000):
if i % 3 == 0 or i % 5 == 0:
a += i
print(a) # 233168 (프로젝트 오일러 1번 문제)
a, b = 1, 1
result = 0
while a + b <= 4000000:
if (a + b) % 2 == 0:
result += a+b
a, b = b, a+b
print(result) # 4613732 (프로젝트 오일러 2번 문제)
https://docs.python.org/ko/3/library/stdtypes.html#
* 모르면 바로바로 물어보고 찾아보자! (구글링, 공식문서)
하루 3문제 정도 6개월은 꾸준히 알고리즘을 풀자! (프로그래머스, 백준, 삼성 SW Expert 아카데미)