python.03

2020. 3. 15. 16:16
728x90

이번 시간에는 python.02 포스트에서 다룬 기본 자료형(정수형, 실수형, etc)을 사용해 복합적인 처리를 하는 리스트, 듀플, 딕셔너리에 대해서 알아보겠습니다. 복합자료형을 얼마나 잘 다룰 수 있는지에 따라 개발자의 역량에 차이가 많이 난다고 합니다!!

우선, 복합 자료형들 중에서 가장 많이 사용되는 리스트에 대해 알아봅시다.

 

1. 리스트 (list)

list : 자료들을 순서대로 차곡차곡 모아 놓은 것

prime = [2, 3, 5, 7, 9, 11, 13, 17, 19]

yun = ['christine', 123, 3.14, False]
# 차례대로 문자열, 정수, 실수, boolean

 

‘prime’으로 지정된 리스트는 소수로 구성된 리스트입니다. (*소수 : 1보다 크고, 약수로 1과 자기 자신만을 갖는 자연수)

'yun'으로 지정된 리스트는 여러 종류의 타입으로 이루어져 있는데, 차례대로 문자열(Christine), 정수(123), 실수(3.14), 불리언 (False) 값이 있습니다.

그리고 세 번째 리스트 'line'은 정수 1, 2 [1, 2]라는 또 다른 리스트로 구성되어 있습니다. , 리스트 안에 리스트가 들어가 있는 특이한 구조이므로 인덱스를 통해 이중 배열 형태로 접근 가능합니다. (아래의 코드블럭을 참고) 

line[0]  # 1
line[1]  # 2
line[2]  # [1,2]

line[2][0]  # 속의 리스트 [1, 2]의 0번째 요소인 1이 출력됨
line[2][1]  # 속의 리스트 [1, 2]의 0번째 요소인 2가 출력됨

prime[-1]  # 가장 마지막 요소인 13이 출력됨
line * 2  # 2번 중복되어 [1, 2, [1, 2], 1, 2, [1, 2]]이 출력됨

 

여기서 주의할 점!!

위의 사진을 보면 prime + yun 을 한 것과 yun + prime 한 결과는 다르게 나옵니다. 두 개의 리스트를 합치는 것은 가능하나, 합친 순서에 따라 서로 다른 값이 생성된다는 의미입니다. 즉, 순서가 바뀌면 다른 자료형이 된다는 것입니다. 

del yun[1] 
# yun의 두 번째 요소 123 삭제
# 반환값 : [“christine”, 3.14, False]

yun.append(123) # 리스트 마지막에 123을 추가! [“christine”, 3.14, False, 123]

yun[1] = 3.141592  # 리스트 두번째 요소인 3.14를 3.141592로 변경! 

#[“christine”, 3.141592, False, 123]

 

마지막 줄에서 볼 수 있듯이, 리스트의 값은 언제나 수정 가능합니다. 

 

scramble = [9, 10, 7, 5, 1, 3, 2]  #scramble 리스트 선언

scramble.sort()  # scramble 리스트의 요소를 자동 정렬됨.  
# 오름차순으로 정리됨. [1,2,3,5,7,9,10] 

scramble.reverse()  # reverse는 sort함수의 정반대. 
# 내림차순으로 정리됨. [10,9,7,5,3,2,1]

scramble.insert(0, 4)  # 원하는 위치에 원하는 요소를 추가 
# scramble.insert(위치, 추가할숫자). 즉, 0번 위치에 4라는 값을 추가한다.  
# [4,10,9,7,5,3,2,1]

 

 

2. 튜플(tuple)

Tuplelist와 유사한 기능을 가졌지만, tuple의 가장 큰 특징이자 list와의 차이점은 바로 수정(삽입, 삭제)이 안 된다는 점입니다. 또한, list에서는 [대괄호], tuple에서는 (소괄호)를 사용한다는 점을 기억해야합니다.

이번에도 예시로 설명해보겠습니다.

 

tuple0 = ()
tuple1 = (2, 3, 5, 7, 11, 13, 17, 19)
tuple2 = (“christine”, 123, 3.14)

tuple1[0]-1
# tuple1의 0번째 요소인 2를 -1로 변경하면 에러가 발생!
# TypeError : ‘tuple’ object does not support item assignment
# 뜻 : tuple은 아이템 대입/지정해주는 기능을 지원하지 않는다

del tuple1[3]
# TypeError : ‘tuple’ object does not support item deletion
# 뜻 : tuple은 아이템 삭제해주는 기능을 지원하지 않는다

 

만약 수정을 하고싶다면 tuple을 list로 바꿔버리면 해결됩니다! (아래의 코드블럭을 참고)

순서 : tuplelist로 변경 -> 수정 -> list를 다시 tuple로 변경.

 

lst 1= list(tuple1)  
# tuple1을 list1로 전환. Lst1 쓰고 엔터 쳐보면 (2, …, 19) -> [2, …, 19]로 나온다.

Lst1[0] = 1
# 리스트1의 0번째 요소를 1로 변경! 
# [1, …, 19]

t = tuple(lst1)
# 다시 튜플 형태로 돌아옴. 
# tuple로 돌아왔는지 확인해보면 (1, …, 19)가 반환됨

 

 

3. 딕셔너리(dictionary)

Listtuple에서는 “sequential”하게 여러 데이터를 괄호로 묶어서 사용했지만, dictionary에서는 조금 다릅니다. Dictionary를 번역하면 사전이지 않나요? , dictionary는 무언가를 빠르게 찾을 때 사용됩니다. 사전과 마찬가지로 dictionary도 데이터가 정렬되어 있어서 ㄱ,,ㄷ 나 a, b, c 와 같은 어떤 특정 키워드/기준으로 값을 찾아야 합니다.

그리고 list에서는 [대괄호], tuple에서는 (소괄호), dictionary에선 {curly braces/ 중괄호}를 사용합니다!

 

 딕셔너리의 구성 

  • key : ‘name’, ‘age’, ‘height’   ->  dic.keys() 함수를 사용하면 리스트 형태로 key값들만 모아서 출력
  • Value  : ‘christine’, 20, 160   ->  dic.values() 함수를 사용하면 리스트 형태로 딕셔너리의 값만 모아서 출력
  • 딕셔너리에서는 {key : value값} 이것을 기준으로 value값을 검색합니다. dic.items() 함수를 사용하면 리스트 형태로 각각의 (key : value값) 을 출력합니다. 따라서, dic 내부 값들의 구성을 한 눈에 확인할 수 있다는 장점이 있습니다.

 

dic = {‘name’ : ‘christine’, ‘age’ : 20, ‘height’ : 160}  # 딕셔너리 선언

dic
# {braces} 안의 값들 (name, age, height)을 알파벳 순(age, height, name)으로 정렬해서 출력함
# {‘age’ : 20, ‘height’ : 160, ‘name’ : ‘christine’}

dic[‘name’]
# christine

 

위의 코드 블럭에서 dic['name']을 입력했듯이, dic[‘숫자가 아닌 key’] 이런 식으로 검색해야만 결과를 알 수 있습니다.

, 특정 key에 대한 value값을 알고 싶을 때 검색 방법: dic[value] (X)   /   dic[key] (O)

 

만약 dic 안에 ‘address’라는 key 값이 있는지 알고 싶은 경우, 2가지 방법이 있습니다 :

 

#첫 번째 방법
‘address’ in dic  # 존재하면 True, 존재하지 않으면 False가 출력됨


#두 번째 방법
dic.get(‘address’)
print dic.get(‘address’)  # 존재하면 ‘address’라는 키의 value값을, 존재하지 않으면 None이 출력됨

 

만약 여기서 key값으로 0을 입력하면 해당되는 키가 없기 때문에 값이 출력되지 않습니다. , 딕셔너리 안에 존재하는 key 값들로만 출력이 가능합니다. 그리고 이번 예시에서는 key값을 string형으로 사용했지만 key를 숫자 형태로도 사용할 수 있습니다.

**만약에 없는 key를 사용해서 결과를 내려 한다면 당연히 에러가 뜰겁니다! 그러면 프로그램이 중단되므로, 프로그램이 제대로 작동하는 것을 확인하기 위한 방법으로는 key의 존재 여부를 물어보거나 없는 key를 사용해 에러를 발생시켜 확인하기도 합니다.

 

 정리하기 

  • 딕셔너리 : 어떤 keykey에 매칭되는 value 값을 모아두고 사용자가 필요할 때마다 key를 이용해서 검색하는 것. 따라서 keyvalue값을 보기 쉽게 잘 저장해두는 편이 좋습니다.
  • List, tuple, dictionary 기본 자료형을 사용해서 복합적인 처리를 할 때 사용
  • List삽입, 삭제, 수정이 가능
  • tuplelist와 같은 형태의 자료형이지만 삽입, 삭제, 수정이 불가능
  • dictionary는 {key : value값} 형태로 1:1 매칭시켜서 저장함
728x90

'Python' 카테고리의 다른 글

Python.05  (0) 2020.05.18
Python.04  (0) 2020.05.18
python.02  (0) 2020.03.11
python.01 (Intro)  (0) 2020.03.06

BELATED ARTICLES

more