본문 바로가기

프로그래밍/파이썬

[파이썬] 4-2. 파이썬에서 사용되는 자료형

IV. 튜플 자료형


왜 튜플을 사용할까?? 

리스트의 항목값은 아래처럼 변화가 가능하고 튜플의 항목값은 변화가 불가능한데, 따라서 프로그램이 실행되는 동안 그 값이 항상 변하지 않기를 바란다거나 값이 바뀔까 걱정하고 싶지 않다면 주저하지말고 튜플을 사용해야 한다.



튜플과 리스트의 차이점

1. 리스트는 "[]"를 이용하지만, 튜플은 "()"를 이용한다.

2. 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.

 >>> tuple1 = ()

 >>> tuple2 = (1,)     ◀ 1개 요소를 가질 때는 요소 뒤에 콤마(,)를 붙여야 한다.

 >>> tuple3 = (1, 2, 3) 

 >>> tuple4 = 1, 2, 3  ◀ 괄호()를 생략할 수 있다.



튜플의 인덱싱과 슬라이싱 및 연산자

 >>> t1 = {1, 2, 'a', 'b'}

 >>> t1[0]

 1

 >>> t1[3]

 'b'

 인덱싱 

 >>> t1 = {1, 2, 'a', 'b'}

 >>> t1[1:]  //t1[1]부터 끝까지

 {2, 'a', 'b'}

 슬라이싱

 >>> t2 = {3, 4}
 >>> t1 + t2

 >>> {1, 2, 'a', 'b', 3, 4}

 튜플 더하기 

 >>> t2 * 3
 {3, 4, 3, 4, 3, 4}

 튜플 곱하기




V. 딕셔너리 자료형


딕셔너리 자료형이란??

리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고 Key를 통해 Value를 얻는 대응관계의 자료형이다.


 기본형태: {Key1:Value1, Key2:Value2, Key3:Value3 ...}

 ex) >>> a{1:'hi'} ◀ Key로 정수값 1, Value로 'hi'라는 문자열을 사용했다.

      >>> a = {'a':[1, 2, 3]} ◀ Value에 리스트를 넣는 것도 가능하다.



딕셔너리 쌍 추가, 삭제하기

 >>> a = {1:'a'}

 >>> a[2] = 'b'  //{2:'b'} 쌍 추가

 >>> a

 {2:'b', 1:'a'}

 >>> a['address'] = 'newyork'

 {'address':'newyork', 2:'b', 1:'a'}

 >>> a[3] = [1, 2, 3]

 {'address':'newyork', 3:[1, 2, 3], 2:'b', 1:'a'}

 딕셔너리 쌍 추가하기

 [딕셔너리는 순서를 따지지 않음]

 >>> del a[1] // key가 1인 key:value 쌍 삭제

 >>> a

 {'address':'newyork', 3:[1, 2, 3], 2:'b'}

 딕셔너리 요소 삭제하기



딕셔너리 사용 예 및 주의 사항

 >>> grade = {'kim':80, 'jin':99}

 >>> grade['kim']

 80

 >>> grade['jin']

 99

 딕셔너리는 왼쪽 예 처럼 이름, 성적 같이 한 쌍으로 표현할때 편리하게 사용 할 수 있다.

 [딕셔너리는 key 값을 통해 Value 값을 얻음]

 >>> a = {1:'a', 2:'b'}

 >>> a[1]

 'a'

 >>> a[2]

 'b'

 a[1]과 a[2]는 리스트나 튜플과 전혀 다르다. 딕셔너리 변수안에서의 [] 숫자는 key에 해당한다.

 >>> a = {1:'a', 1:'b'}

 >>> a

 {1:'b'}

 동일한 Key가 존재하면 1개를 제외한 나머지 중복된 쌍은 무시된다.

 [어떤 것이 무시되는지는 알 수 없으므로 중복된 Key는 사용해선 안됨]

 >>> a = {[1, 2]: 'hi'}

 ~~ TypeError오류 발생 ~~

 딕셔너리는 Key 값으로 리스트를 사용할 수 없다.


딕셔너리 관련 함수들

 >>> a {'name':'kim', 'add','newyork', 'birth': '0228'}

 >>> a.keys()

 dict_keys(['name', 'add', 'birth'])

 Key 리스트 만들기(keys): 해당 값의 Key만 모아서 dict_keys라는 객체를 리턴한다.

 [파이썬 2.7버전까지는 dict_keys가 아닌 리스트를 리턴함]

 >>> for k in a.keys():

 . . .       print(k)

 . . .

 add

 birth

 name

 dict_keys객체 활용(1)

 >>> list(a.keys())

 ['add', 'birth', 'name']

 dict_keys객체 활용(2): 리스트로 변환

 >>> a.value()
 dict_values('kim', 'newyork', '0228'])

 Value 리스트 만들기(values): Value값만 얻을 때 사용 하며, dict_values 객체를 리턴한다.

 >>> a.items()

 dict_items([('name','kim'), ('add', 'newyork'), ('birth', '0228')])

 Key:Value 쌍 얻기(items): items함수는 key와 value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.

 >>> a.clear()

 >>> a

 {}

 Key:Value 쌍 모두 지우기(clear): clear함수는 딕셔너리 안의 모든 요소를 삭제한다.

 >>> a = {'name':'kim', 'add':'newyork', 'birth':'0228'}

 >>> a.get('name')

 'kim'

 >>> a.get('add')

 'newyork'

 >>> a.get('nokey') //None을 리턴함

 >>> a.get('nokey', 'sub') //Key가 없을경우 디폴트 값 반환

 sub

 Key로 Value얻기(get)

 >>> a = {'name':'kim', 'add','newyork', 'birth':'0228'}

 >>> 'name' in a

 True

 >>> 'email' in a

 False

 해당 Key가 딕셔너리 안에 있는지 조사하기(in)




V. 집합 자료형


집합 자료형이란?

집합과 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형이다. 이 자료형은 중복을 허용하지 않으며, 순서가 없다.

 >>> s = set('Hello')

 >>> s

 {'e', 'l', 'o', 'H'} // 'l'은 중복되어 1번만 써졌고, 순서는 정해져있지 않다.


set 자료형은 순서가 없으므로, 역시 인덱싱으로 값을 얻을 수 없다. 그래서 set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한 후 해야한다.

 >>> s = set([1, 2, 3])

 >>> l = list(s) //리스트로 변환

 [1, 2, 3]

 >>> l[0]

 1

 >>> t = tuple(s) //튜플로 변환

 >>> t

 (1, 2, 3)

 >>> t[0]

 1 




집합 자료형의 교집합, 합집합, 차집합

 >>> s1 = set([1, 2, 3, 4, 5, 6])

 >>> s2 = set([4, 5, 6, 7, 8, 9]) 


 >>> s1 & s2

 {4, 5, 6}

 교집합: '&' 기호를 이용하거나, intersection함수를 이용한다.

 >>> s1.intersection(s2)

 {4, 5, 6}

 >>> s1 | s2

 {1, 2, 3, 4, 5, 6, 7, 8, 9}

 합집합: '|' 기호를 이용하거나, union함수를 이용한다.

 >>> s1.union(s2)
 {1, 2, 3, 4, 5, 6, 7, 8, 9}

 >>> s1 - s2

 {1, 2, 3}

 >>> s2 - s1

 { 8, 9, 7}

 차집합: '-' 기호를 이용하거나, difference함수를 이용한다.

 >>> s1.difference(s2)

 {1, 2, 3}

 >>> s2.difference(s1)

 {8, 9, 7}



집합 자료형관련 함수들

 >>> s = set([1, 2, 3])

 >>> s.add(4)

 >>> s

 {1, 2, 3, 4} 

 값 1개 추가하기(add)

 >>> s = set([1, 2, 3])

 >>> s.update([4, 5, 6])

 >>> s

 {1, 2, 3, 4, 5, 6}

 값 여러 개 추가하기(update)

 >>> s = set([1, 2, 3])

 >>> s.remove(2)

 >>> s

 {1, 3}

 특정 값 제거하기(remove) 




VI. 파이썬에서의 자료형


자료형의 참과 거짓

자료형

 값 

 참 or 거짓 

 문자열

 "python" 

 참 

 "" 

 거짓 

 리스트

 [1, 2, 3] 

 참 

 [] 

 거짓 

 튜플

 () 

 거짓 

 딕셔너리 

 {} 

 거짓 

 숫자형 

 0이 아닌 숫자 

 참 

 0 

 거짓 

 

 None 

 거짓 



자료형에서 참과 거짓 활용

>>> a = [1, 2, 3, 4]

 >>> while a: //a가 참인 동안

 . . .     a.pop() //마지막 요소를 하나씩 꺼냄

 . . .

 4

 3

 2

 1 

 리스트 a에서 a.pop()으로 요소를 한개씩 꺼내는데, 결국 "[]"가 되어 거짓이 되어, 조건문이 종료된다.

 >>> if []:  //만약 [ ]가 참이면 True출력

 . . .    print("True") 

 . . .  else: //만약 [ ]가 거짓이면 False출력

 . . .    print("False")

 . . .

 False

 if문에서 참 거짓 활용

 >>> if [1, 2, 3]:

 . . .    print("True")

 . . .  else:

 . . .    print("False")

 . . .

 True // [1, 2, 3]은 요소값이 있으므로 참



자료형의 값을 저장하는 공간, 변수

집합과 아래 코드처럼, a = 3이라고 하면 3이라는 값을 가지는 정수 자료형(객체)이 자동으로 메모리에 생성된다. a는 변수의 이름이며, 3이라는 정수형 객체가 저장된 메모리 위치를 가리키게 된다. 즉, 변수 a는 객체가 저장된 메모리 위치를 가리키는 레퍼런스라고도 할 수 있다.

 >>> a = 3 


※파이썬에서 '3'은 상수가 아닌 정수형 객체이다.