파이썬3프로그래밍 2장 2003

22
2 장 장장장 장 장장장 - 장장장 -

Upload: jong-pil-won

Post on 23-Jun-2015

865 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: 파이썬3프로그래밍 2장 2003

2 장 자료형 및 연산자

- 김욱동 -

Page 2: 파이썬3프로그래밍 2장 2003

목 차 변수 자료형 유니코드 리스트 튜플 세트 사전 부울 얕은 /깊은 복사

Page 3: 파이썬3프로그래밍 2장 2003

변 수변 수

명명규칙문자 , 숫자 , 밑줄 (_), 숫자는 처음 나올 수 없음예약어는 사용 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

Page 4: 파이썬3프로그래밍 2장 2003

자료형 - 수치자료형

수치 ( 숫자 )int, long, float, complex3.x 는 2.x 와 달리 long 형이 삭제됨0o 는 8 진수 , 0b 는 2 진수 , 0x 는 16 진수로

인식각 진수 변환 함수 존재 oct(), hex(), bin()

Page 5: 파이썬3프로그래밍 2장 2003

자료형 – 수치 ( 계속 )자료형

>>> 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

Page 6: 파이썬3프로그래밍 2장 2003

자료형 - 문자자료형

문자열단일인용부호 (‘) 나 다중인용부호 (“) 로 묶어서

표현문자열을 쓰는 그대로 화면에 출력하기 위한 “””

혹은 ‘’’ 제공>>> print(“””새벽에 일어나서 하니깐 대박 피곤해 . 번개는 신들린 마냥 침 .아 .. 예민한 자동차가 번개 칠 때마다 울어댄다 . - 김욱동“””)

새벽에 일어나서 하니깐 대박 피곤해 . 번개는 신들린 마냥 침 .아 .. 예민한 자동차가 번개 칠 때마다 울어댄다 . - 김욱동

Page 7: 파이썬3프로그래밍 2장 2003

자료형 - 문자자료형

이스케이브 문자사용 예 의미

\n 라인피드 ( 줄바꿈 )

\t 탭

\r 캐리지 리턴

\0 널 (Null)

\\ 문자 ‘ \’( 역슬래시 )

\’ 단일 인용부호 (‘)

\” 이중 인용부호

Page 8: 파이썬3프로그래밍 2장 2003

자료형 - 문자자료형

문자열 연산자‘+’ 는 문자열 병합 ( 문자열 끼리는 생략 가능 )

‘*’ 는 문자열 반복인덱스를 통한 접근 가능 ( 단 , 문자열 변경 불

가 )○ 양수는 시작 위치 기준 , 음수는 끝 위치 기준

슬라이싱을 통한 특정 문자열 추출○ [ 시작위치 : 끝위치 ]

문자열 숫자 간 변환 연산자 제공○ str(), int(), float() …

Page 9: 파이썬3프로그래밍 2장 2003

자료형 - 문자자료형

>>> ‘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

Page 10: 파이썬3프로그래밍 2장 2003

유니코드유니코드

파이썬 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’)가

Page 11: 파이썬3프로그래밍 2장 2003

유니코드유니코드

파이썬 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’

Page 12: 파이썬3프로그래밍 2장 2003

리스트리스트

값들의 나열 인덱싱 및 슬라이싱 기능 append(), extend() insert() 를 통한 추가 pop() 및 remove() 를 통한 삭제 index() 를 통한 인덱스 추적 sort() 와 reverse() 를 통한 순 /역방향

정렬키 값을 정해 정렬방식을 조정할 수 있음

count() 를 통한 개수 추적

Page 13: 파이썬3프로그래밍 2장 2003

리스트리스트

>>> names = [‘ 이성희’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ ]>>> type(names)<class ‘list’>>>> names.append(‘ 김현주’ )>>> names[‘ 이성희’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ , ‘ 김현주’ ]>>> names.insert(1, ‘ 누구냐 넌’ )>>> names[‘ 이성희’ , ‘ 누구냐 넌’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ , ‘ 김현주’ ]>>> names.index(‘ 누구냐 넌’ )1>>> names.count(‘ 김욱동’ )1>>> names.pop(); # default = last_item‘ 김현주’>>> names>>> [‘ 이성희’ , ‘ 누구냐 넌’ , ‘ 김욱동’ , ‘ 원종필’ , ‘ 박준식’ ]

Page 14: 파이썬3프로그래밍 2장 2003

리스트리스트

>>> names.sort()>>> names[' 김욱동 ', ' 누구냐 넌 ', ' 박준식 ', ' 원종필 ', ' 이성희 ']

>>> def mysort(x) :return x[-2]

>>> names.sort(key=mysort)>>> names[' 누구냐 넌 ', ' 이성희 ', ' 김욱동 ', ' 원종필 ', ' 박준식 ']>>> names.sort(key=mysort, reverse=True)>>> names[' 박준식 ', ' 원종필 ', ' 김욱동 ', ' 이성희 ', ' 누구냐 넌 ']

Page 15: 파이썬3프로그래밍 2장 2003

세트세트

집합과 동일 제공되는 메소드는 리스트와 거의 유사 교집합 , 차집합 , 합집합 등 집합 메소드

제공 인덱스 지원하지 않음

>>> 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}

Page 16: 파이썬3프로그래밍 2장 2003

튜플튜플

리스트와 유사하나 () 로 묶어 표현 읽기 전용 , 속도 빠름 인덱스 지원

>>> 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

Page 17: 파이썬3프로그래밍 2장 2003

사전사전

키와 값의 쌍으로 표현 인덱스는 지원하지 않음 . 사전의 내용을 얻기 위해 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()

Page 18: 파이썬3프로그래밍 2장 2003

부울부울

참 (True) 과 거짓 (False) 을 타나내는 자료형

부울 값들 간의 논리연산이나 , 수치들간의 비교연산의 결과로 사용

논리연산에 수치사용시 0 은 False, 0이외의 음수 및 양수는 true 로 간주

>>> 1 < 2True>>> True & True # True and TrueTrue>>> bool(0)False>>> bool(-1)True

Page 19: 파이썬3프로그래밍 2장 2003

얕은 /깊은 복사얕은 /깊은 복사

파이썬에서 모든 변수는 객체의 주소를 가짐

>>> 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]

변수

참조

객체

Page 20: 파이썬3프로그래밍 2장 2003

얕은 /깊은 복사얕은 /깊은 복사

객체의 공유를 막기 위해서 copy 모듈사용얕은 복사 copy.copy(object)깊은 복사 copy.deepcopy(oject)

Page 21: 파이썬3프로그래밍 2장 2003

얕은 /깊은 복사얕은 /깊은 복사

>>> 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]])

Page 22: 파이썬3프로그래밍 2장 2003

The End