파이썬3프로그래밍 2장 2003
TRANSCRIPT
2 장 자료형 및 연산자
- 김욱동 -
목 차 변수 자료형 유니코드 리스트 튜플 세트 사전 부울 얕은 /깊은 복사
변 수변 수
명명규칙문자 , 숫자 , 밑줄 (_), 숫자는 처음 나올 수 없음예약어는 사용 X
사용 예
and, as, assert, break, class, continue, def, del, elif, else, except, is, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, yield
>>> friend = 1>>> 원종필 = 2>>> (a, b) = (1, 2) 튜플 사용>>> [c, d] = [3, 4] 리스트 사용>>> e = f = g = 1
자료형 - 수치자료형
수치 ( 숫자 )int, long, float, complex3.x 는 2.x 와 달리 long 형이 삭제됨0o 는 8 진수 , 0b 는 2 진수 , 0x 는 16 진수로
인식각 진수 변환 함수 존재 oct(), hex(), bin()
자료형 – 수치 ( 계속 )자료형
>>> type(1)<class ‘int’>>>> type(3.14)<class ‘float’>>>> x = 3 – 4j>>> type(x)<class ‘complex’>>>> x.imag-4.0>>> x.real3.0
# 원과 삼각형의 넓이를 구하는 예>>> r = 2>>> circle_area = 3.14 * (r ** 2)>>> x = 3>>> y = 4>>> triangle_area = x * y / 2>>> print(circle_area, triangle_area)12.56 6.0
자료형 - 문자자료형
문자열단일인용부호 (‘) 나 다중인용부호 (“) 로 묶어서
표현문자열을 쓰는 그대로 화면에 출력하기 위한 “””
혹은 ‘’’ 제공>>> print(“””새벽에 일어나서 하니깐 대박 피곤해 . 번개는 신들린 마냥 침 .아 .. 예민한 자동차가 번개 칠 때마다 울어댄다 . - 김욱동“””)
새벽에 일어나서 하니깐 대박 피곤해 . 번개는 신들린 마냥 침 .아 .. 예민한 자동차가 번개 칠 때마다 울어댄다 . - 김욱동
자료형 - 문자자료형
이스케이브 문자사용 예 의미
\n 라인피드 ( 줄바꿈 )
\t 탭
\r 캐리지 리턴
\0 널 (Null)
\\ 문자 ‘ \’( 역슬래시 )
\’ 단일 인용부호 (‘)
\” 이중 인용부호
자료형 - 문자자료형
문자열 연산자‘+’ 는 문자열 병합 ( 문자열 끼리는 생략 가능 )
‘*’ 는 문자열 반복인덱스를 통한 접근 가능 ( 단 , 문자열 변경 불
가 )○ 양수는 시작 위치 기준 , 음수는 끝 위치 기준
슬라이싱을 통한 특정 문자열 추출○ [ 시작위치 : 끝위치 ]
문자열 숫자 간 변환 연산자 제공○ str(), int(), float() …
자료형 - 문자자료형
>>> ‘py’ ‘thon’‘python’>>> ‘py’ + ‘thon’‘python’>>> ‘py’ * 3 + ‘thon’‘pypypython’
>>> a = ‘python’>>> a[5]‘n’>>> a[1:4]‘yth’>>> a[-2:] # a[-2]????‘on’
>>> str(3.14)‘3.14’>>> int(“49”49
유니코드유니코드
파이썬 2.x일반적인 문자 외에 유니코드를 별도로 지원
○ u 를 붙이거나 unicode(str, ‘code_page’) 함수 이용
>>> unicode(‘ 가’ , ‘cp949’)u’\uac00’>>> ‘ 가나다라’ .decode(‘cp949’)u’\uac00\ub098\ub2e4\ub77c’>>> u’\uac00’.encode(‘cp949’)‘\xb0\xa1’>>> print u’\uac00’.encode(‘cp949’)가
유니코드유니코드
파이썬 3.x일반 문자열이 기본적으로 모두 유니코드유니코드 이외에 인코딩이 있는 문자열은 bytes
로 문자의 유니코드 값은 ord() 로 유니코드 값을
문자로 변화할 때는 chr() 메소드 이용>>> type(‘ 가’ )<class ‘str’>>>> ‘ 가’ .encode(‘utf-8’)b’\xea\xb0\x80’>>> type(‘ 가’ .encode(‘utf-8’))<class ‘bytes’>>>> ord(‘s’)115>>> chr(115)‘s’
리스트리스트
값들의 나열 인덱싱 및 슬라이싱 기능 append(), extend() insert() 를 통한 추가 pop() 및 remove() 를 통한 삭제 index() 를 통한 인덱스 추적 sort() 와 reverse() 를 통한 순 /역방향
정렬키 값을 정해 정렬방식을 조정할 수 있음
count() 를 통한 개수 추적
리스트리스트
>>> names = [‘ 이성희’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ ]>>> type(names)<class ‘list’>>>> names.append(‘ 김현주’ )>>> names[‘ 이성희’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ , ‘ 김현주’ ]>>> names.insert(1, ‘ 누구냐 넌’ )>>> names[‘ 이성희’ , ‘ 누구냐 넌’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ , ‘ 김현주’ ]>>> names.index(‘ 누구냐 넌’ )1>>> names.count(‘ 김욱동’ )1>>> names.pop(); # default = last_item‘ 김현주’>>> names>>> [‘ 이성희’ , ‘ 누구냐 넌’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ ]
리스트리스트
>>> names.sort()>>> names[' 김욱동 ', ' 누구냐 넌 ', ' 박준식 ', ' 원종필 ', ' 이성희 ']
>>> def mysort(x) :return x[-2]
>>> names.sort(key=mysort)>>> names[' 누구냐 넌 ', ' 이성희 ', ' 김욱동 ', ' 원종필 ', ' 박준식 ']>>> names.sort(key=mysort, reverse=True)>>> names[' 박준식 ', ' 원종필 ', ' 김욱동 ', ' 이성희 ', ' 누구냐 넌 ']
세트세트
집합과 동일 제공되는 메소드는 리스트와 거의 유사 교집합 , 차집합 , 합집합 등 집합 메소드
제공 인덱스 지원하지 않음
>>> a = {1, 2, 3}>>> b = {3, 4, 5}>>> print(a, b){1, 2, 3} {3, 4, 5}>>> a.union(b) # a | b{1, 2, 3, 4, 5}>>> a.intersection(b) # a & b{3}>>> a.difference(b) # a - b{1, 2}
튜플튜플
리스트와 유사하나 () 로 묶어 표현 읽기 전용 , 속도 빠름 인덱스 지원
>>> t = (1, 2, 3)>>> type(t)<class ‘tuple’>>>> a, b = 1, 2>>> print(a, b)1 2>>> a, b = b, a # swap>>> print(a, b)2 1>>> 1 in tTrue>>> 4 in 5False
사전사전
키와 값의 쌍으로 표현 인덱스는 지원하지 않음 . 사전의 내용을 얻기 위해 items(), keys(),
values() 메서드 사용
>>> d = dict(a=1, b=3, c=5)>>> d{‘a’: 1, ‘c’: 5, ‘b’: 3}>>> color = {“apple”:”red”, “banana”:”yellow”}>>> color{'apple': 'red', 'banana': 'yellow'}>>> color[0] # error!>>> del color[“apple”]>>> color.clear()
부울부울
참 (True) 과 거짓 (False) 을 타나내는 자료형
부울 값들 간의 논리연산이나 , 수치들간의 비교연산의 결과로 사용
논리연산에 수치사용시 0 은 False, 0이외의 음수 및 양수는 true 로 간주
>>> 1 < 2True>>> True & True # True and TrueTrue>>> bool(0)False>>> bool(-1)True
얕은 /깊은 복사얕은 /깊은 복사
파이썬에서 모든 변수는 객체의 주소를 가짐
>>> a = [1, 2, 3]>>> b = a>>> a[0] = 38>>> print(a, b)[38, 2, 3] [38, 2, 3]>>> id(a), id(b)(17163168, 17163168)
a
b
[1, 2, 3]
변수
참조
객체
얕은 /깊은 복사얕은 /깊은 복사
객체의 공유를 막기 위해서 copy 모듈사용얕은 복사 copy.copy(object)깊은 복사 copy.deepcopy(oject)
얕은 /깊은 복사얕은 /깊은 복사
>>> import copy>>> a=[1,[2,3]]>>> cp_a = copy.copy(a)>>> dcp_a = copy.deepcopy(a)>>> a, cp_a, dcp_a([1, [2, 3]], [1, [2, 3]], [1, [2, 3]])>>> id(a), id(cp_a), id(dcp_a)(15228000, 17047960, 17047680)>>> a[1].append(4)>>> a, cp_a([1, [2, 3, 4]], [1, [2, 3, 4]])>>> a[0] = 333>>> a, cp_a([333, [2, 3, 4]], [1, [2, 3, 4]])>>> a, cp_a, dcp_a([333, [2, 3, 4]], [1, [2, 3, 4]], [1, [2, 3]])
The End