Programming Language/Python

데이터 저장타입

D4tai1 2018. 5. 22.

1. list()

>>> data = ['a', 'b']

>>> data = list('ab')

 

위 2가지 방식으로 초기화

 

(1) offset으로 값을 얻어올 수 있다.

>>> print data[1]

b

 

(2) .append는 가장 마지막 인덱스 다음에 데이터를 추가

>>> data.append('c')

>>> print data

['a', 'b', 'c']

 

(3) .insert는 원하는 인덱스에 데이터를 추가, 나머지 데이터는 뒤로 한 칸씩 이동

>>> data.insert(1, 'c')

>>> print data

['a', 'c', 'b']

 

(4) del [리스트이름[인덱스]] 는 해당 인덱스 데이터 삭제, -1은 뒤에서 첫 번째, 즉 맨 뒤 데이터를 의미

>>> del data[-1]

>>> print data

['a']

 

(5) 데이터로 인덱스 찾기

>>> print data.index('a')

0

 

(6) 문자열 결합하기

>>> print '/'.join(data)

>>> a/b

 

>>> print ''.join(data)

>>> ab

 

(7) 정렬하기

>>> data.sort()

>>> print data

['a', 'b']

 

(8) 원래 리스트 그대로, 새로운 리스트에 sort하기

>>> second = sorted(data)

>>> print second

['a', 'b']

 

(9) 리스트의 개수

>>> print len(data)

2

 

 

 

2. tuple()

리스트와 달리 변하지 않는다.

 

즉, 추가/수정/삭제 불가

 

그러므로 insert(), append() 등의 함수가 없다.

 

리스트는 대괄호로 생성, 튜플은 소괄호로 생성

 

>>> tutu = ('apple', 'banana')

>>> print tutu

('apple', 'banana')

 

(1) 튜플 언패킹 = 한 번에 여러 개의 변수 할당

>>> a, b, c = tutu

>>> print a

('apple', 'banana')

>>> print b

('apple', 'banana')

>>> print c

('apple', 'banana')

 

 

(2) 교환

>>> passwd = 'apple'

>>> identi = 'banana'

>>> passwd, identi = identi, passwd

>>> print passwd

banana

 

 

3. dictionary = dict(딕트)

dictionary는 0, 1, 2 등의 순서로 따지지 않고 offset으로 항목을 선택할 수 없다.

 

이에 값[value]에 해당하는 키[key]를 지정해준다.

 

그래서 키를 이용하여 값을 찾는다.

 

키는 대체로 문자열이지만 어떤 타입이 될 수도 있다.

 

단 값을 찾는 키는 유일해야 한다.

 

만약 겹친다면 뒤에 입력한 키로 덮어쓰여진다.

 

다른 언어에서는 연관배열, 연상배열, 해시, 해시맵 이라 부른다.

 

리스트는 대괄호로 생성, 튜플은 소괄호로 생성, 딕셔너리는 중괄호와 : 로 생성

 

dic = {

'a' : 'apple',

'b' : 'banana',

'c' : 'cat',

'd' : 'data'

}

 

dics = {

'd' : 'destination',

'e' : 'effect',

'f' : 'fail'

}

 

(1) a키의 값은 apple, b키의 값은 banana, c키의 값은 cat, d키의 값은 data

>>> print dic

{'a' : 'apple, 'b' : 'banana', 'c' : 'cat', 'd' : 'data'} 

#순서는 b, c, d 순서대로 나오지 않을 수 있다.  이미 말했듯이 순서대로 저장되는 것이 아니기 때문이다.

 

(2) a키의 값을 구하려면

>>> print dic['a']

apple

 

(3) a키의 값을 수정하려면

>>> dic['a'] = 'attack'

>>> print dic['a']

attack

 

(4) 특정 키와 값을 삭제

>>> del dic['a']

{'b' : 'banana', 'c' : 'cat', 'd' : 'data'}

 

(5) dictionarty 전체 삭제

>>> dic.clear()

 

(6) 모든 키 얻기

>>> print dic.keys()

['a', 'c', 'b', 'd']

 

(7) 모든 값 얻기

>>> print dic.values()

['apple', 'cat', 'banana', 'data']

 

(8) 모든 쌍의 키-값 얻기

>>> print dic.items()

[('a', 'apple), ('c', 'cat'), ('b', 'banana'), ('d', 'data')]

 

(9) 서로 다른 dictionary를 합치려면 ... 'd'키의 경우 겹치기 때문에 나중에 입력한 키로 덮어쓰여진다.

>>> dic.update(dics)

>>> print dic

{ 'a' : 'apple, 'b' : 'banana', 'c' : 'cat', 'd' = 'destination', 'e' = 'effect', 'f' = 'fail'}

 

 

 

 

 

 

 

4. set()

set은 값은 버리고 키만 남은 dictionary와 같다.

 

dictionary와 마찬가지로 키는 유일해야하며, 어떤 것이 존재하는지 여부만 판단하기 위해 set을 사용한다.

 

 

리스트는 list() 함수나 대괄호로 생성, 튜플은 소괄호로 생성,

딕셔너리는 중괄호와 : 로 생성, 셋은 set() 함수나 중괄호로 생성

 

>>> number = {0, 2, 4}    #중괄호로만 생성되었기 때문에 set이다.

>>> figure = {2, 4, 7}

>>> print number        #출력 결과를 보면 순서대로 되어있지 않다. dictionary와 같은 이유이다.

{2, 0, 4}        

 

(1) list를 set으로 만들기

>>> setting = set( ['apple', 'banana', 'apple'])

>>> print setting

set (['apple', 'banana'])    # 중복된 키는 존재 불가

 

 

(2) tuple을 set으로 만들기

>>> setting = set( {'apple', 'banana', 'apple'})

>>> print setting

 

set (['apple', 'banana'])     

 

 

(3) dictionary을 set으로 만들기

>>> setting = set( ['apple' : 'one', 'banana' : 'two', 'apple' : 'three'])

>>> print setting

 

set (['apple', 'banana'])  

 

(4) intersection(교집합)

>>> print number & figure

set([2, 4])

>>> number.intersection(figure)

set([2, 4])

 

(5) union(합집합)

>>> print number | figure

set([0, 2, 4, 7])

>>> number.union(figure)

set([0, 2, 4, 7])

 

(6) difference(차집합)

>>> print number - figure

set([0])

>>> number.difference(figure)

set([0])

 

(7) exclusive(대칭차집합 : 한 쪽에만 있는 경우 , 즉 둘 다 있거나 아에 없는 경우 제외, xor연산)

>>> print number ^ figure

set([0, 7])

>>> number.symmetric_difference(figure)

set([0, 7])

 

(8) subset(부분집합)

>>> print number <= figure

false

 

>>> number.issubset(figure)

false

 

>>> number.issubset(number)

ture        # 자기자신도 부분집합에 포함된다.

 

--- 초기화  ---

>>> number = {0, 2, 4}  

>>> figure = {2, 4}

 

(9) proper subset(진부분집합)

>>> print number > figure     # figure가 number의 부분집합인가?

true

 

'Programming Language > Python' 카테고리의 다른 글

문자열 길이 : len()  (0) 2018.07.23
문자열 slice  (0) 2018.07.23
for문 - 3  (0) 2018.05.23
for문 - 2  (0) 2018.05.23
for문 - 1  (0) 2018.05.22

댓글