U E D R , A S I H C RSS

2학기파�선스터디/ 튜플, 사전


1. 1. 튜플


1.1. 1. 튜플� 연산


- 튜플� 리스트와 같� 시퀀스 형�므로 시퀀스 형� 갖는 �반�� 연산� 모� 갖는다 (��싱, 슬��싱, 연결, 반복, 길� 연산 등)
- 튜플� ()로 표현�다.
- 튜플과 리스트� 차��� 튜플� 변경 불가능형��는 것과, 리스트가 갖고 있는 것과 같� 메�드(�체 함수)를 갖지 않는다는 것�다.

~cpp 
t = ()      # 공 튜플
t = (1,2,3)

t = 1,2,3     # 괄호가 없어� 튜플��

r = (1,)
r = 1,       # r=1로 해��지 않기 위함

t[0]=100  # 허용 안�. �러 발�
 

* 튜플� �용하여 좌우변� 복수개� �료를 치환할 수 있다.
>>> x,y,z=1,2,3

* �를 �용하여 � 변수� 값� 쉽게 치환할 수 있다.
>>> x = 1
>>> y = 2
>>> x, y = y, x
>>> x, y
(2,1)


1.2. 패킹과 언패킹


튜플 패킹 - 한 튜플 안� 여러 개� ��터를 넣는 것� 튜플 패킹��고 한다.
~cpp 
t = 1,2,'hello'
튜플 언패킹 - 반대로, 튜플�서 ��터를 꺼내오는 것� 튜플 언패킹��고 한다.
~cpp 
x,y,z = t

* 리스트와 튜플� �호 변환� 가능하다.
~cpp 
>>> T = (1,2,3,4,5)
>>> L = list(T)
>>> L[0] = 100
>>> L
[100, 2, 3, 4, 5]
>>> T = tuple(L)
>>> T 
(100, 2, 3, 4, 5) 


1.3. 튜플� 사용하는 경우


1. 함수� 있어서 하나 ��� 값� 리턴하는 경우
~cpp 
>>> def calc(a,b):
          return a+b, a*b
>>> x, y = calc(5, 4)

2. 문�열 �매팅
~cpp 
>>> print 'id : %s, name : %s' % ('gslee','GangSeong')
id : gslee, name : GangSeong

3. apply 함수를 사용할 때
~cpp 
>>> apply(calc, (4,5))
(9,20)

4. 그 �외� 고정� 값� 표현하기 위하여 튜플� 사용한다.
~cpp 
>>> d = {'one':1, 'two':2}
>>> d.items()
[('one',1), ('two',2)]

2. 2. 사전


- 사전� 임�� �체� 집합� �료형��, �료� 순서를 갖지 않는다.
- 집합���는 �미�서 리스트나 튜플과 ��하나, �료� 순서를 정할 수 없는 매핑(mapping)형�다.
- 매핑형�서는 키(key)를 �용해 값(value)� 접근하다.

~cpp 
>>> dic = {}               # dic��는 �름으로 비어있는 사전� 만든다.

>>> dic['dictionary'] = '1. A reference book containing an alphabetical list of words, ...'

>>> dic['python'] = 'Any of various nonvenomous snakes of the family Pythonidae, ...'

>>> dic['dictionary']      # dic아, ‘dictionary’가 �니?

'1. A reference book containing an alphabetical list of words, ...'


~cpp 
>>> member = {'basketball' :5, 'soccer':11, 'baseball':9}
>>> member['baseball']  # 검색
9
>>> member['volleyball'] = 7  # 항목 추가
>>> member
 {'soccer' : 11, 'volleyball' : 7 'baseball' : 9 , 'basketball' : 5}
>>> len(member)
4
>>> del member['basketball']  # 항목 삭제


* 사전� 순서는 입력값� 종류� 따�서 언제든지 바뀔 수 있다.
�런 구조를 사용하는 �유는 키� �한 검색��를 빨리하기 위함�다. < 해쉬 (hash) 용법 >

* 값� 임�� �체가 � 수 있지만, 키는 변경 불가능(immutable) �료형�어야 한다.
따�서 문�열, 숫�, 튜플� 키가 � 수 있지만, 리스트, 사전� 키가 � 수 없다.


함수를 키나 값으로 활용할 수� 있다.
~cpp 
>>> def add(a,b):
        return a+b

>>> def sub(a,b):
        return a-b

>>> action = {0:add, 1:sub}
>>> action[0](4,5)
9
>>> action[1](4,5)
-1

2.1. 사전 �체� 메소드

1. D.keys() : 사전�서 키들� 리스트로 리턴
2. D.values() : 값들� 리스트로 리턴
3. D.items() : (key, value) 리스트로 리턴
4. D.has_key(key) : 멤버십 테스트. D가 key를 가지고 있는가 검사. 있으면 참(1), 없으면 거짓(0)� 리턴.
key in D 와 같다.
5. D.clear() : 사전 D� 모든 아�템 삭제
6. D.copy() : 사전 복사
~cpp 
>>> a = d  # 사전 레�런스 복사. (사전 �체는 공유�다)
>>> a = d.copy()  # 사전 복사.  (별�� 사전 �체가 마련�다.)

>>> phone = {'jack': 232412, 'jim':1111, 'Joseph' : 234632}
>>> p = phone
>>> phone['jack'] = 1234
>>> phone
{'jack': 1234, 'jim':1111, 'Joseph' : 234632}
>>> p
{'jack': 1234, 'jim':1111, 'Joseph' : 234632}

>>> ph = phone.copy()
>>> phone['babo'] = 5324
>>> phone
{'jack': 1234, 'jim':1111, 'Joseph' : 234632, 'babo' : 5324}
>>> ph
{'jack': 1234, 'jim':1111, 'Joseph' : 234632}
7. D.get(key , x) : 값� 존재하면 Dkey 즉 값� 리턴, 아니면 x를 리턴
8. D.setdefalut(key , x) : get 과 같으나 값� 존재하지 않� 때 값� 설정 (Dkey = x)
9. D.update(b) : for k in b.keys(): Dk=bk 즉, 사전 b� 아�템들� D� 추가시킨다.
10. D.popitem() : (키, 값) 튜플� 리턴하고 사전�서 항목� 제거한다.

2.2. 사전� for문으로 참조하기


~cpp 
>>> D = {'a':1, 'b':2 ,'c':3}
>>> for key in D.keys():
        print key, D[key]

b 2 
c 3
a 1



* 정렬하기
~cpp 
>>> items = D.items()
>>> items.sort()
>>> items
[('a', 1), ('b', 2) , ('c', 3)]
>>> for k,v in items:
        print k, v

a 1
b 2
c 3

* 2.2 ���서 가능
~cpp  
>>> D = {'a':1, 'b':2, 'c':3}
>>> for key in D:
        print key, D[key]

a 1 
c 3
b 2

2.3. 심볼 테�블


globals()를 사용하면 전역 �역(모듈 �역)� 심볼 테�블(사전)� 얻는다.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:13
Processing time 0.0530 sec