본문 바로가기

개발자 레니는 지금 -/소프트웨어와 함께

[ Do it! Jump to Python ] 02-2 파이썬 프로그래밍의 기초, 자료형 - 리스트, 튜플, 딕셔너리


02 파이썬 프로그래밍의 기초, 자료형


리스트, 튜플, 딕셔너리







02-3 리스트( List )



- 예를 들어 1부터 10까지의 숫자 중 홀수 모음인 1, 3, 5, 7, 9라는 집합을 생각해 보자. 이런 숫자 모음을 숫자나 문자열로 표현하기는 쉽지 않다. 파이썬에는 이렇나 불편함을 해소할 수 있는 자료형이 존재하는데 바로 리스트이다.





- 리스트는 비어있는 리스트( [] ) 일 수도 있고, 숫자 또는 문자열을 요소 값으로 가질 수도 있으며, 숫자와 문자열을 함께 요소값으로 가질 수도 있고, 리스트 자체를 요소값으로 가질 수도 있다. 즉 리스트 안에는 어떠한 자료형도 포함시킬 수 있다.



리스트의 인덱싱과 슬라이싱


- 리스트 역시 문자열처럼 인덱싱과 슬라이싱이 가능하다. 혹시 기억이 안 날 수 있으니 다시한번 보도록하자!



- 특정 인덱스값을 주지않고 변수 이름만 선언하면 리스트 전체를 출력한다.

- 이중리스트

>>> a=[1, 2, 3, ['a', 'b', 'c']]

>>> a[0]

1

>>> a[-1]

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


Q. 그렇다면 여기서 리스트 a에 포함된 ['a', 'b', 'c']라는 리스트에서 'a'라는 값을 뽑아내려면 어떻게 해야할까?




A. a 리스트의 마지막 요소의 첫번째 요소를 가르쳐주면된다!

>>> a[3][0]

'a'

>>> a[-1][0]     #뒤에서 부터 순서를 센다면 이렇게!

'a'



- 리스트 슬라이싱은 문자열과 똑같이 인덱스가 0부터 시작된다는 것을 유의하여 사용하면 된다.

- 중첩된 리스트에서 슬라이싱하기

>>> a=[1, 2, 3, ['a', 'b', 'c'], 4, 5]

>>> a[2:5]

[3, ['a', 'b', 'c'], 4] 가 출력된다.

>>> a[3][:2]     #4번째 요소에 2번째 요소까지! 

['a', 'b']



리스트 연산자




혹 C언어나 Java를 배우셨던 분이라면 배열과 비슷하다고 생각하실 수 있지만 Python의 리스트는 입력되는 요소의 자료형을 따지지 

않습니다!

C/Java에서 사용하는 배열은 같은 자료형을 가진 요소들의 집합이며 Python의 리스트는 다양한 자료형들의 집합일 수도 있고 같은 자료형을 가진 요소들의 집합이 될 수도 있다.


이 이야기를 왜 하는 것 인가!?


다음과 같은 소스 코드를 입력했을 때결과값은 어떻게 나올까?

>>> a=[1, 2, 3] 일 때 a리스트 요소인 3과 문자열 "hi"를 이용하여 3hi를 만들고 싶다면?

>>> a[2]+"hi" 를 사용하면 된다?





리스트의 수정, 변경과 삭제


- 리스트 요소 하나를 수정할 때는 해당 인덱스를 가르켜서 값을 변경하면 된다.

- 리스트의 연속된 요소를 수정할 때는 슬라이싱을 이용하여 인덱스를 가르켜서 값을 변경하면 된다.



- [] 사용해 리스트 요소 삭제하기

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

>>> a[1:3] = []

>>> a

[1, 4]


- del 함수 사용해 리스트 요소 삭제하기


del 함수는 파이썬이 자체적으로 가지고 있는

삭제 함수이며 다음과 같이 사용합니다 :)


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

>>> del a[1]

>>> a

[1, 3, 4]




리스트 관련 함수들











02-4 튜플( Tuple )



- 몇 가지 점을 제외하고는 리스트와 비슷하다.



- 단지 1개의 요소만을 가질 때는 요소 뒤에 콤마( , )를 반드시 붙여야 한다.

- 여러개의 값을 입력할 때 ( ) 괄호를 생략해도 무방하다.

- 프로그램이 실행되는 동안 그 값이 항상 변하지 않기를 바란다거나 값이 바뀔까 걱정하고 싶지 않다면 주저하지말고 튜플을 사용해야 한다.



1. 튜플 요소값 삭제 시 오류


>>> t1=(1, 2, 'a', 'b')

>>> del t1[0]


Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: 'tuple' object doesnt' support item deletion


2. 튜플 요소값 변경 시 오류


>>> t1=(1, 2, 'a', 'b')

>>> t1[0]='c'


Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: 'tuple' object dose not support item assignment

- 튜플도 인덱싱과 슬라이싱을 사용할 수 있다.

- 더하기(두 개의 tuple 합치기)와 곱하기(반복) 연산이 가능하다.





02-5 딕셔너리( Dictionary )



- 사람은 누구든지 "이름"="홍길동", "생일"="몇 월 몇 일" 등으로 구분할 수 있다. 파이썬은 영리하게도 이러한 대응 관계를 나타낼 수 있는 자료형을 가지고 있다.

- 요즘 사용하는 대부분의 언어들도 이러한 대응 관계를 나타내는 자료형을 갖고 있는데, 이를 연관 배열( Associative array ) 또는 해시( Hash )라고 한다, 파이썬에서는 이러한 자료형을 딕셔너리라고 하는데 단어 그대로의 해석은 사전이라는 의미이다.





- 딕셔너리는 KeyValue라는 것을 한 쌍으로 갖는 자료형으로, Key를 통해 Value를 얻는다.

- 리스트나 튜플처럼 순차적으로 해당 요소 값을 가지지 않는다 (인덱스 x)

- Key에는 변하지 않는 값을 사용하고, Value에는 변하는 값(변수)과 변하지 않는 값(상수) 모두 사용할 수 있다.




 주 의 사 항 

1.  딕셔너리를 만들 때 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 것!

이때, 꼭 앞에 쓴 것이 무시되는 것은 아니고 어떤 것이 무시될지는 예측할 수 없다.

2.  Key에 List는 쓸 수 없다! 하지만, Tuple은 Key로 쓸 수 있다!

why? Key는 변하면 안되는데, List는 값의 수정이 가능하지만 Tuple은 값의 수정을 허용하지 않기 때문이다!



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




딕셔너리 사용하는 방법


- 리스트나 튜플, 문자열은 요소값을 얻어내고자 할 때 인덱싱이나 슬라이싱 기법 중 하나를 이용했다. 하지만, 딕셔너리는 단 한가지 방법 뿐이다. 바로 Key를 사용해서 Value값을 얻어오는 것이다.

- 어떤 Key의 Value를 얻기 위해서는 '딕셔너리변수[Key]'를 사용한다.

>>> grade={'pey':10, 'juliet':99}

>>> grade['pey']

10




딕셔너리 관련 함수들


>>> a={'name':'pey', 'phone':'0119993323', 'birth':'1118'} 를 기준으로 예시를 설명한다.