반응형


+ 튜플 (tuple)    ; immutable! 리스트와 같으나 변경불가.

() 를 사용한다. 리스트와 비슷하나, 튜플은 값을 변경할 수 없다.
t1=()
t2=(1,)             # 주의!!! 원소가 한 개인 경우 반드시 뒤에 ,를 써줘야 한다. 쓰지 않으면 () 연산자로 인식.
a,b = 10,20          # 이것도 튜플을 통한 복수 데이터 할당의 응용이다. 
b,a = a,b          # 이렇게 값을 동시에 변경할 수도 있다. swap이 쉽다.
t3=(1,2,3)
t4=1,2,3,4
위와 같이 사용

매크로 값 할당 처럼 사용 가능.
(MON, TUE, WED) = range(3)
MON=0
TUE=1
WED=2

-튜플 연산
+는 데이터 추가. *는 반복.
tuples=('a','b','c')
tuples+('d',e','f')     # a b c d e f 가 된다. 
tuples*3          # a b c a b c a b c가 된다.







+Set ; 집합.{}
노드들의 순서 없음. 중복은 추가되지 않음.
a_set = { 1 }

-list를 set으로 변환.
a_set=set(a_list)

a_set=set()        ; empty set
a_set.add(4)    ; item add
len(a_set)         ; item count
a_set.update( {4,5,6} )    ; items add (중복은 추가되지 않음.)
a_set.update( [10,20,30])    ; items add (중복은 추가되지 않음.)
a_set.discard( 10 )    ; 10을 삭제함. (없어도 에러 안남)
a_set.remove(10)    ; 10을 삭제함. (없으면 에러. KeyError)
a_set.clear()

30 in a_set    ; check (T/F) exist
a_set.union(b_set)    ; union set
a_set.intersection(b_set)    ; intersection
a_set.difference(b_set)    ; diff. A-B
a_set.symmetric_difference(b_set) ; diff.  (A+B)-(A intersect B)
a_set.issubset(b_set) ; T/F   check A<B
b_set.isupperset(a_set) ; T/F  check B>A











+ Dictionary
{key:value,...}를 사용.        json과 비슷.
unordered. key-value pairs.

dic={123:456, 3.14:11.2, (1,3):(3,1),  'abc':'def',  'list':{1,2,3}, 'dict':{1:2, 3:4}}

dic={'name':'pey', 'phone':'111111','birth':'1111'}
dic['name']
주의! 
a={1:'a',2:'b'}
a[1]='a' 이다.  Dictionary에서 a[1]에서 1은 인덱스가 아니고 Key다.!!

-사전에 추가 방법
a['name2']='test' ; 없으면 추가된다!!!.  있으면 업데이트된다. 
-삭제는 del을 사용!
del a['name2']
a.keys() ; key 명으로된 list
a.clear() ; 모두 삭제
a.get('name') ; 키로 값 얻기 ; a['name'] 과 동일하다.

-객체가 None 또는 empty이면 false로 취급.
-키가 없으면 KeyError 발생
a['akaka']

-사전 키 존재! 여부 검사 (in, has_key)
'name' in dic
True
'job' in dic
False

if 'keyname' in dic:
     use...
or
if dict.has_key('keyname')==1:
     use...
or
value=dic.get('keyname', 0)          # 키가 없으면 디폴트값으로 설정함.!! ( 널체크. null, None. )


+ dictionary 생성
import glob
import os
metadata_dict = { f:os.stat(f) for f in glob.glob('*test*.py') }

metadata_dict[0]
metadata_dict['atest01.py'].st_size
list(metadata_dict.keys())


+ key, value 뒤집기
{ value:key for key, value in a_dict.items() }


+ key, value 검색
for k, v in dictA.items():
     print(k,v)
for (k,v) in dictA.items(): 상동

for k in dictA:
     print(k, dictA[k])



'Python' 카테고리의 다른 글

Python 외부 모듈사용.time,string,random, try except  (0) 2018.04.09
Python 강좌7 클래스  (0) 2018.03.27
Python 강좌5 List  (0) 2018.03.20
Python 강좌4 정규식 regular expression  (0) 2018.03.19
Python 강좌3 자료형. 수/문자열  (1) 2018.03.16

+ Recent posts