문자열, 딕셔너리, 세트
문자열 리스트는 요소 여러 개가 모여 있음. 마찬가지로 문자열도 문자가 여러 개 모여 있는 상태라 리스트와 비슷. 문자열을 인덱스로 접근 : 문자열[인덱스] >>> hello = 'Hello, world!' >>> hello[0] # 첫 번째(인덱스 0) 문자 출력 'H' >>> hello[4] # 다섯 번째(인덱스 4) 문자 출력 'o‘ >>> hello[-1] # 마지막(인덱스 -1) 문자 출력(뒤에서 첫 번째) '!' >>> hello[-2] # 마지막의 바로 앞(인덱스 -2) 문자 출력(뒤에서 두 번째) 'd‘ >>> hello[len(hello) - 1] # 마지막(인덱스 12) 문자 출력 리스트 비교 IDLE 에서 해보기
문자열 그림 문자열을 인덱스로 접근할 때는 범위를 벗어나면 안됨. 문자열은 인덱스를 지정하여 문자를 가져올 수는 있지만 =로 문자를 할당할 수는 없음. 즉, 문자열은 내용을 변경하는 방법이나 메서드를 제공하지 않음.
문자열 인덱스 범위 결정 : 문자열 [시작인덱스:끝인덱스] >>> hello = 'Hello, world!' '' >>> hello[1:2] 'e' >>> hello[3:5] 'lo' >>> hello[3:-1] 'lo, world' >>> hello[-10:12] >>> hello = 'Hello, world!' >>> hello[:5] 'Hello' >>> hello[5:] ', world!' >>> hello[:] 'Hello, world!‘ >>> hello[0:len(hello)] 'Hello, world!' >>> hello[:len(hello)]
더하기(+) 기호 사용해 연결. 또 곱하기(*) 기호 사용 문자열 반복
문자열과 for 반복문 문자열을 입력받아 반대로 출력 >>> for i in 'Hello': ... print(i, end=' ') ... H e l l o >>> 'e' in ‘Hello’ True
문자열 조작하기 : 파이썬에서 제공하는 문자열 메서드 사용 replace(바꿀문자열, 새문자열): 문자열 안의 문자열을 다른 문자열로 바꿈 split() : 공백을 기준으로 문자열을 분리하여 리스트로 만듬. join(리스트) : 구분자 문자열과 문자열 리스트(튜플)의 요소를 연결하여 문자열로 만듬. lstrip(삭제할문자들) : 문자열에서 왼쪽 공백을 모두 삭제. rstrip(삭제할문자들) : 오른쪽 공백을 모두 삭제. strip(삭제할문자들) : 양쪽 공백을 모두 삭제. find(찾을문자열) : 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환 rfind(찾을문자열) : 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환 index(찾을문자열) : 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환 count(문자열) : 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아냄. upper() : 문자열의 문자를 모두 대문자로 lower() : 문자열의 문자를 모두 소문자로
zfill(길이) : 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채움. center(길이) : ljust(길이) : rjust(길이) :
>>> s = 'Hello, world!' >>> s.replace('world', 'Python') 'Hello, Python! >>> s = 'python' >>> s.upper() 'PYTHON' >>> s = 'PYTHON' >>> s.lower() 'python' >>> s = 'apple pineapple' >>> s.index('pl') 2 >>> s.rindex('pl') 12 >>> s = 'apple pear grape pineapple orange' >>> s.split() ['apple', 'pear', 'grape', 'pineapple', 'orange'] >>>s = 'apple,pear,grape,pineapple,orange' >>>s.split(',') >>> s = ' Python ' >>> s.lstrip() 'Python ' >>> s.rstrip() ' Python' >>> s.strip() 'Python' >>> s = 'apple pineapple' >>> s.count('pl') 2 >>> a = ' ' >>> a.join(['apple', 'pear', 'grape', 'pineapple', 'orange']) 'apple pear grape pineapple orange' >>> a = '-' 'apple-pear-grape-pineapple-orange' >>> s = ', python.' >>> s.lstrip(',.') ' python.' >>> s.rstrip(',.') ', python' >>> s.strip(',.') ' python' >>> s = 'apple pineapple' >>> s.rfind('pl') 12
문자열 내 대문자와 소문자 변환하기 : swapcase(), title()
문자열 중간의 공백까지 삭제해 주는 코드
문자열을 입력 받아 그중 o를 $로 변경하는 문자열 변경을 응용
연/월/일 형식으로 문자열을 입력받아 10년 후 날짜를 출력하는 코드
딕셔너리 사전은 단어와 설명 형태로 이루어져 있다. 딕셔너리는 { }(중괄호) 안에 키: 값 형식으로 저장하며 각 키와 값은 ,(콤마)로 구분 딕셔너리 = {키1: 값1, 키2: 값2} 키에는 리스트와 딕셔너리를 사용할 수 없다. >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50} >>> x {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50} >>> x = {'a': 10, 'a': 20, 'c': 30, 'd': 40, 'e': 50} >>> x['a'] # 키가 중복되면 가장 뒤에 있는 값만 사용함 20 >>> x # 중복되는 키는 저장되지 않음 {'a': 20, 'c': 30, 'd': 40, 'e': 50}
빈 딕셔너리를 만들 때는 { }만 지정하거나 dict를 사용 딕셔너리 = {} ,딕셔너리 = dict() 다양한 방법으로 딕셔너리 딕셔너리 = dict(키1=값2, 키2=값2) • 딕셔너리 = dict(zip([키1, 키2], [값1, 값2])) • 딕셔너리 = dict([(키1, 값1), (키2, 값2)]) • 딕셔너리 = dict({키2: 값1, 키2: 값2}) >>> x = {} >>> x {} >>> y = dict() >>> y >>> x1 = dict(a=10, b=20, c=30) # 키=값 형식으로 딕셔너리를 만듦 >>> x1 {'a': 10, 'b': 20, 'c': 30} x2 = dict(zip(['a', 'b', 'c'], [10, 20, 30])) # zip을 이용하여 리스트 두 개를 딕셔너리로 만듦 >>> x2 {'a': 10, 'b': 20, 'c': 30}
세 번째 방법은 리스트 안에 (키, 값) 형식의 튜플을 나열하는 방법입니다. >>> x3 = dict([('a', 10), ('b', 20), ('c', 30)]) # (키, 값) 형식의 튜플로 딕셔너리를 만듦 >>> x3 {'a': 10, 'b': 20, 'c': 30} >>> x4 = dict({'a': 10, 'b': 20, 'c': 30}) # dict 안에서 중괄호로 딕셔너리를 만듦 >>> x4 {'a': 10, 'b': 20, 'c': 30} >>> x = dict(zip(range(1, 11), [2 ** i for i in range(1, 11)])) >>> x {1: 2, 2: 4, 3: 8, 4: 16, 5: 32, 6: 64, 7: 128, 8: 256, 9: 512, 10: 1024}
딕셔너리의 키에 접근하고 값 할당하기: 딕셔너리[키] 딕셔너리의 키에 접근하고 값 할당하기: 딕셔너리[키] >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50} >>> x['a'] 10 >>> x['c'] 30 >>> x['e'] 50 >>> x = {100: 'hundred', False: 0, 3.5: [3.5, 3.5]} >>> x[100] 'hundred' >>> x[False] >>> x[3.5] [3.5, 3.5] 딕셔너리의 값 할당하기: 딕셔너리[키]=값 >>> x = {'a': 10, 'b': 20} >>> x['a'] = 100 # 키 'a'의 값을 100으로 변경 >>> x['b'] = 200 # 키 'b'의 값을 200으로 변경 >>> x['c'] = 300 # 키 'c'를 추가하고 값 300 할당 >>> x {'a': 100, 'b': 200, 'c': 300}
딕셔너리의 키 개수 구하기:len(딕셔너리) >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> len(x) 4 >>> len({'a': 10, 'b': 20, 'c': 30, 'd': 40}) zip과 range로 만든 딕셔너리의 키 개수 >>> x = dict(zip(range(174, 235), [str(i) for i in range(174, 235)])) >>> len(x) 61
딕셔너리 조작하기 >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.update(a=100, b=200) >>> print(x['a'], x['b']) 100 200 >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.pop('a') 10 >>> x {'b': 20, 'c': 30, 'd': 40} >>> x.pop('z', 0) >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> del x['a'] >>> x {'b': 20, 'c': 30, 'd': 40}
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.popitem() ('d', 40) >>> x {'a': 10, 'b': 20, 'c': 30} >>> <span class="n">x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.clear() >>> x {} >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.get('a') 10 >>> x.get('z', 0)
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.setdefault('e') >>> x.setdefault('f', 100) 100 >>> x {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None, 'f': 100} >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> x.items() dict_items([('a', 10), ('b', 20), ('c', 30), ('d', 40)]) >>> x.keys() dict_keys(['a', 'b', 'c', 'd']) >>> x.values() dict_values([10, 20, 30, 40])
>>> keys = ['a', 'b', 'c', 'd'] >>> x = dict.fromkeys(keys) >>> x {'a': None, 'b': None, 'c': None, 'd': None} >>> y = dict.fromkeys(keys, 100) >>> y {'a': 100, 'b': 100, 'c': 100, 'd': 100} dict.fromkeys(키리스트)와 같이 메서드에 키 리스트만 지정하면 값은 모두 None이 저장되고, dict.fromkeys(키리스트, 값)과 같이 키 리스트와 값을 지정하면 해당 값이 딕셔너리의 값으로 저장
딕셔너리를 완전히 두 개로 만들려면 copy() 로 키-값 쌍을 모두 복사 >>> x = {'a': 0, 'b': 0, 'c': 0, 'd': 0} >>> y = x.copy() >>> y['a'] = 99 >>> x {'a': 0, 'b': 0, 'c': 0, 'd': 0} >>> y {'a': 99, 'b': 0, 'c': 0, 'd': 0} >>> >>> x = {'a': 0, 'b': 0, 'c': 0, 'd': 0} >>> y = x.copy() >>> y['a'] = 99 >>> x {'a': 0, 'b': 0, 'c': 0, 'd': 0} >>> y {'a': 99, 'b': 0, 'c': 0, 'd': 0} >>>
반복문으로 딕셔너리의 키-값 쌍을 모두 출력하기 for 키, 값 in 딕셔너리.items(): 반복할 코드 #↑ 들여쓰기 4칸 >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> for key, value in x.items(): ... print(key, value) ... a 10 b 20 c 30 d 40 >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> for i in x: ... print(i, end=' ') ... a b c d >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> for value in x.values(): ... print(value, end=' ') ... 10 20 30 40 >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> for key in x.keys(): ... print(key, end=' ') ... a b c d
>>> {key: 0 for key in dict. fromkeys(['a', 'b', 'c', 'd']) >>> {key: 0 for key in dict.fromkeys(['a', 'b', 'c', 'd']).keys()}> # 키만 가져옴 {'a': 0, 'b': 0, 'c': 0, 'd': 0} >>> {value: 0 for value in {'a': 10, 'b': 20, 'c': 30, 'd': 40}.values()} # 값을 키로 사용 {10: 0, 20: 0, 30: 0, 40: 0} >>> {value: key for key, value in {'a': 10, 'b': 20, 'c': 30, 'd': 40}.items()} # 키-값 자리를 바꿈 {10: 'a', 20: 'b', 30: 'c', 40: 'd'}
딕셔너리 안에서 딕셔너리 사용하기 terrestrial_planet = { 'Mercury': { 'mean_radius': 2439.7,'mass': 3.3022E+23,'orbital_period': 87.969 }, 'Venus': {'mean_radius': 6051.8, 'mass': 4.8676E+24, 'orbital_period': 224.70069, }, 'Earth': {'mean_radius': 6371.0, 'mass': 5.97219E+24, 'orbital_period': 365.25641, }, 'Mars': {'mean_radius': 3389.5, 'mass': 6.4185E+23, 'orbital_period': 686.9600, } } print(terrestrial_planet['Venus']['mean_radius']) # 6051.8
세트(set) 집합을 표현하는 세트(set)라는 자료형을 제공 세트는 합집합, 교집합, 차집합 등의 연산이 가능 세트는 { }(중괄호) 안에 값을 저장하며 각 요소(값)은 ,(콤마)로 구분 세트 = {값1, 값2, 값3}, set(반복가능한객체) 세트에 들어가는 요소는 중복될 수 없음. 전체가 출력 >>> fruits = {'strawberry', 'grape', 'orange', 'pineapple', 'cherry'} >>> fruits {'pineapple', 'orange', 'grape', 'strawberry', 'cherry'} >>> b = set(range(5)) >>> b {0, 1, 2, 3, 4}
집합 연산 사용 add로 요소(값)를 추가 세트1 | 세트2: 합짐합 세트1 & 세트2 : 교집합 세트1 - 세트2 : 차집합 세트1 ^ 세트2 : 대칭차집합 집합 연산 사용 >>> a = {1, 2, 3, 4} >>> b = {3, 4, 5, 6} >>> a | b {1, 2, 3, 4, 5, 6} >>> a = {1, 2, 3, 4} >>> b = {3, 4, 5, 6} >>> a & b {3, 4} >>> a = {1, 2, 3, 4} >>>b = {3, 4, 5, 6} >>> a - b {1, 2} >>> a = {1, 2, 3, 4} >>> b = {3, 4, 5, 6} >>> a ^ b {1, 2, 5, 6} add로 요소(값)를 추가 >>> a = {1, 2, 3, 4} >>> b = a >>> b.add(5) >>> a {1, 2, 3, 4, 5} >>> b