파이썬 스터디3
seonae's wiki
2019 파이썬 스터디 | |
---|---|
일정 | 2019/1/24 4-6시 |
장소 | 강의동 110호 |
참여인원 | 광우,선애,승진,나라 |
내용 | 파이썬기초 : 자료형(튜플, 집합) |
자료형:튜플
- 튜플(tuple) : 시퀀스 자료형으로 리스트와 거의 비슷. BUT ()로 표현, 수정 불가능.
- 튜플이 필요한 이유? 변경가능한 자료는 리스트로, 변경하면 안되는 자료는 튜플로 처리.
#튜플의 기본 형태 >>> t1 = () >>> t2 = (1,) >>> t3 = (1, 2, 3) >>> t4 = 1, 2, 3 >>> t5 = ('a', 'b', ('ab', 'cd')) #튜플의 ()와 수식의 ()는 주의! >>> r = (1) >>> r = (1,) >>> r = 1,
- 튜플 연산
#인덱싱 >>> t1 = (1, 2, 'a', 'b') >>> t1[0] >>> t1[3] #슬라이싱 >>> t1 = (1, 2, 'a', 'b') >>> t1[1:] #더하기 >>> t1 = (1, 2, 'a', 'b') >>> t2 = (3, 4) >>> t1 + t2 #곱하기 >>> t2 = (3, 4) >>> t2 * 3 #튜플 길이 구하기 >>> t1 = (1, 2, 'a', 'b') >>> len(t1)
연습문제1
- (1,2,3)이라는 튜플에 4를 추가해서 (1,2,3,4)로 만들어보자
- 튜플은 변경이 안됨
#지우기 >>> t1 = (1, 2, 'a', 'b') >>> del t1[0] #변경하기 >>> t1 = (1, 2, 'a', 'b') >>> t1[0] = 'c' #에러 발생
- 튜플 메소드
>>> t = (1, 2, 3, 2, 2, 3) >>> t.count(2) #요소 갯수세기 count() >>> t.index(2) #요소 위치 파악 index()
- 패킹(packing) & 언패킹(unpacking)
- 패킹 : 한데이터에 여러개의 데이터를 넣는것
- 언패킹 : 한 데이터에서 데이터를 각각 꺼내오는 것.
>>> t = 1, 2, 'hello' #패킹 >>> x, y, z = t #언패킹
- 리스트와 튜플의 상호 변환 : list(), tuple()
>>> T = (1,2,3,4,5) >>> L = list(T) >>> L[0] = 100 >>> T = tuple(L)
- 튜플의 사용 예시
#예시 1, 여러개의 반환 값 >>> def calc(a,b): return a+b, a*b #튜플 반환 >>> x, y = calc(a,b) #예시 2, 함수의 인수 >>> args = (4,5) >>> calc(*args) #예시 3, 문자열 포맷팅 >>> "%d %s" % (12, 'hello')
자료형:사전
- 사전(dictionary) : 특정 키(key)를 주면 이와 관련된 값(value)를 돌려주는 자료형.
- 임의 객체의 집합적 자료형. 데이터 저장 순서가 없음. 매핑형(mapping)
- 연관 배열(Associative array) or 해시(Hash) : 대응 관계를 나타내는 자료형 ex) "이름" = "홍길동", "day" = "1/1"
- 기본형태 : {key: value}, {key1:value1, key2: value2 ....}
- key에는 변하지 않는 값을 넣어야하지만 value에는 아무거나 넣어도 됨.
- 정보 예시 표
key | value |
---|---|
name | pey |
phone | 01012345678 |
birth | 1211 |
- 정보 예시 사전
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'} >>> dic['name'] >>> dic['phone'] >>> dic['birth']
- 사전 조작하기
>>> dic['name'] = 'your name' #변경하기 >>> dic['major'] = 'informatics' #추가하기 >>> dic >>> len(dic) #사전의 길이 파악 >>> del dic['major'] #항목 삭제하기 >>> 'name' in dic #멤버십테스트
- key에는 변하지 않는 값을 넣어야하지만 value에는 아무거나 넣어도 됨.
>>> d = {} #빈 사전 객체 생성 >>> d['str'] = 'abc' >>> d[1] = 4 >>> d[(1,2,3)] = 'tuple' >>> d[[1,2,3]] = 'list' >>> d[{1:2}] = 'dict' #사전 만들기 dict() >>> dict() #빈 사전 만들기 >>> dict(one=1, two=2) >>> dict([('one' ,1), ('two', 2)]) >>> dict({'one' : 1 , 'two' : 2})
- 사전관련 함수
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'} #key리스트 얻기(keys) >>> a.keys() >>> list(a.keys()) #value 리스트 얻기(values) >>> a.values() >>> list(a.values()) #key, value 쌍 얻기(items) >>> a.items() >>> list(a.items()) #모든 요소 지우기(clear) >>> a.clear() >>> a #key로 value얻기(get) >>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'} >>> a.get('name') >>> a['name'] >>> a.get('abc') >>> a['abc'] >>> a.get('abc', 'def') #없는 경우 디폴트(default) 설정 #사전 복사하기 >>> d = {'one' : 1, 'two' : 2, 'three' : 3} >>> d2 = d.copy()
연습문제2
- 다음 표를 딕셔너리로 만들기
key | value |
---|---|
name | 홍길동 |
age | 30 |
birth | 1211 |
- 사전 a에 키 'C'가 없는데, 'C'가 없을 때 에러 대신 70이 나오게 하는 방법은?
>>> a = {'A':90, 'B':80} >>> a['C']
- 플러스 : 두개의 리스트로 사전 만들기 zip()
>>> ['one', 'two', 'three', 'four'] >>> [1,2,3,4] #정답 >>> keys = ['one', 'two', 'three', 'four'] >>> values = [1,2,3,4] >>> dict(zip(keys, values))