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)ì—� ì ‘ê·¼í•˜ë‹¤.
- ì§‘í•©ì �ì�´ë�¼ëŠ” ì�˜ë¯¸ì—�서 리스트나 튜플과 ë�™ì�¼í•˜ë‚˜, ìž�료ì�˜ 순서를 ì •í• ìˆ˜ 없는 매핑(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)ì�„ 리턴.
6. D.copy() : ì‚¬ì „ 복사
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. 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










