Python_2. 리스트, 튜플, 딕셔너리

33759 단어 pyTILTIL

리스트

💡 대괄호[ ]로 감싸 주고 각 요솟값은 쉼표,로 구분해 준다.

a = []						# 비어있는 리스트 / a = list()도 가능
b = [1, 2, 3]					# 숫자를 요솟값인 리스트
c = ['MY', 'name', 'is', 'Jiyoung']		# 문자열을 요솟값인 리스트
d = [1, 2, 'Im', 'Jiyoung']			# 숫자와 문자열을 함께 요솟값으로 가진 리스트
e = [1, 2, ['Im', 'Jiyoung']]			# 리스트 자체가 요솟값인 리스트

리스트 인덱싱

b = [1, 2, 3]
b[0]						# 1
b[-1]						# 3 / [-1]은 리스트의 마지막 요소 값

c = ['MY', 'name', 'is', 'Jiyoung']	
c[2]						# 'is'

e = [1, 2, ['Im', 'Jiyoung']]	
e[2][1]						# 'Jiyoung'

리스트 슬라이싱

a = [1, 2, 3, 4, 5]
a[0:2]						# [1, 2]



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

#a[3]은 ['a', 'b', 'c'], 따라서 a[3][:2]는 ['a', 'b', 'c']의 첫 번째 요소부터 
#세 번째 요소 직전까지의 값, 즉 ['a', 'b']

리스트 연산

더하기

a = [1, 2, 3]
b = [4, 5, 6]
a + b						# [1, 2, 3, 4, 5, 6]

반복하기

a = [1, 2, 3]
a * 3						# [1, 2, 3, 1, 2, 3, 1, 2, 3]

길이구하기 (len함수)

a = [1, 2, 3]
len(a)						#3

💡실수하기 쉬운 리스트 연산 오류💡

a = [1, 2, 3]
a[2] + "hi"

a[2]의 값인 3과 문자열 hi가 더해져서 3hi가 출력될 것이라고 생각할 수 있지만 TypeError가 발생했다.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

a[2]에 저장된 값은 3이라는 정수인데 "hi"는 문자열이다. 정수와 문자열은 당연히 서로 더할 수 없기 때문에 형 오류가 발생한 것이다.
만약 숫자와 문자열을 더해서 '3hi'처럼 만들고 싶다면 숫자 3을 문자 '3'으로 바꾸어 주어야 한다. 다음과 같이 할 수 있다.

str(a[2]) + "hi"

str 함수는 정수나 실수를 문자열의 형태로 바꾸어 주는 파이썬의 내장 함수이다.

수정과 삭제

스트는 값을 수정하거나 삭제할 수 있다. 삭제할 때는 파이썬 내장함수인 del을 사용한다

a = [1, 2, 3]
a[2] = 4
a						# [1, 2, 4] / 마지막 요소값인 3이 4로 수정

del[2]
a						#[1, 2]

리스트 메서드

append

append(x)는 리스트의 맨 마지막에 x를 추가하는 함수이다. 리스트 안에는 어떤 자료형도 추가할 수 있다.

a = [1, 2, 3]
a.append(4)
a						# [1, 2, 3, 4]

a.append([5,6])
a						# [1, 2, 3, 4, [5, 6]]

sort

sort 함수는 리스트의 요소를 순서대로 정렬해 준다.
숫자: 작은 값 부터 순서대로 정렬
문자: 알파벳 순서대로 정렬

a = [1, 4, 3, 2]
a.sort()
a						# [1, 2, 3, 4]

b = ['d', 'a', 'c', 'b']
b.sort()
b						# ['a', 'b', 'c', 'd']
c= ["라","바","다","가","나"]
c.sort()
c						# ['가', '나', '다', "라", '바']

reverse

reverse 함수는 리스트를 역순으로 뒤집어 준다.
👆🏻이때 리스트 요소들을 순서대로 정렬한 다음 다시 역순으로 정렬하는 것이 아니라 현재의 리스트를 그대로 거꾸로 뒤집는다.

a = ['a', 'c', 'b']
a.reverse()
a						# ['b', 'c', 'a']

index

index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.

a = [1,2,3]
a.index(3)					# 2 / 3의 위치는 a[2] 이므로 출력값 2
a.index(1)					# 0 / 1의 위치는 a[0] 이므로 출력값 0
a.index(0)					# ValueError / 리스트에 요소값 0이 없어 오류 발생

insert

insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수이다.
👆🏻파이썬에서는 숫자를 0부터 센다는 것을 기억해야한다.👆🏻

a = [1, 2, 3]
a.insert(0, 4)
a					# [4, 1, 2, 3] / 첫 번째 요소a[0] 위치에 요소값 4 insert
a.insert(3, 5)
a					# [4, 1, 2, 5, 3] /네 번째 요소a[3] 위치에 요소값 5 insert

remove

remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다

a = [1, 2, 3, 1, 2, 3]
a.remove(3)
a					# [1, 2, 1, 2, 3] / 3이 2개지만 첫 번째 3만 제거
a.remove(3)
a					# [1, 2, 1, 2] / 한 번 더 실행시 뒤에 있던 3도 제거

pop

pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.

a = [1,2,3]
a.pop() 				# 3
a					#[1, 2] / 마지막 요소값을 제거

pop(x)는 리스트의 x번째 요소를 돌려주고 그 요소는 삭제한다.

a = [1,2,3]
a.pop(1) 				# 2
a					# [1, 3] / a[1]인 2를 꺼내 삭제

count

count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.

a = [1,2,3,1]
a.count(1)				#2 / 값 1 이 리스트에 2개 있음으로 2 출력

extend

extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.

a = [1,2,3]
a.extend([4,5])
a					# [1, 2, 3, 4, 5]

b = [6, 7]
a.extend(b)
a					# [1, 2, 3, 4, 5, 6, 7]



튜플

💡소괄호( )으로 감싼 형태로 사용하고 대부분 리스트와 비슷하다.
💡리스트는 그 값의 생성, 삭제, 수정이 가능한 반면 한번 설정한 튜플은 그 값을 지우거나 변경할 수 없다.

i1 = ()
i2 = (1,) 				# 1개의 요소만을 가질 때는 반드시 요소 뒤에 콤마(,)
i3 = (1, 2, 3)
i4 = 1, 2, 3				# 괄호( ) 생략 가능
i5 = ('a', 'b', ('ab', 'cd'))

리스트와 튜플의 차이

리스트튜플
요소 값 변화가능불가능

프로그램이 실행되는 동안 그 값이 항상 변하지 않기를 바란다거나 값이 바뀔까 걱정하고 싶지 않다면 튜플을 사용해야 한다. 반대로 수시로 그 값을 변화시켜야할 경우라면 리스트를 사용해야 한다.

딕셔너리

💡중괄호{ }로 감싸주고, 각각의 요소는 Key : Value 형태로 이루어져 있으며 쉼표,로 구분해 준다
💡딕셔너리는 Key와 Value를 한 쌍으로 갖는 자료형이다.
💡딕셔너리는 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다. 이것이 바로 딕셔너리의 가장 큰 특징이다. Key의 Value을 찾기 위해 순차적으로 모두 검색하는 것이 아니라 찾고자 하는 Key가 있는 곳만 보는 것이다.

a = {'name':'Jiyoung', 'age':27, 'birth': '1229'}

💡Key의 Value를 얻기 위해 딕셔너리변수[Key]를 사용한다

a = {'name':'Jiyoung', 'age':27, 'birth': '1229'}
a['name']				# 'Jiyoung'
a['age']				# 27

💡 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시되니 주의해야한다.

a = {'name':'Jiyoung', 'name':'Soyoung','age':27, 'birth': '1229'}
a['name']				# 'Soyoung' / 중복된 값중 맨 뒤의 값이 출력

💡Key에 리스트는 쓸 수 없지만 튜플은 Key에 쓸 수 있다. 값이 변하지 않는 튜플만 사용가능하다.

딕셔너리 메서드

keys

.keys()는 딕셔너리의 Key만을 모아서 dict_keys 객체를 돌려준다.

>>> a = {'name':'Jiyoung','age':27, 'birth': '1229'}
>>> a.keys()
dict_keys(['name', 'age', 'birth'])

values

.values() 는딕셔너리의 value만을 모아서 dict_values 객체를 돌려준다.

>>> a.values()
dict_values(['Jiyoung', 27, '1229'])

items

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

>>> a.items()
dict_items([('name', 'Jiyoung'), ('age', 27), ('birth', '1229')])

clear

clear 함수는 딕셔너리 안의 모든 요소를 삭제하고, 빈 딕셔너리는 { }로 표현한다.

>>> a.clear()
>>> a
{}

get

get(x) 함수는 x라는 Key에 대응되는 Value를 돌려준다.

>>> a = {'name':'Jiyoung','age':27, 'birth': '1229'}
>>> a.get('name')
'Jiyoung'
>>> a.get('age')
27

in

'x' in a를 호출했을 때 x에 해당하는 Key가 존재하면 True을 돌려준다. 반대로 존재하지 않는 Key라면 False을 돌려준다.

>>> a = {'name':'Jiyoung','age':27, 'birth': '1229'}
>>> 'name' in a
True
>>> 'email' in a
False

참조 https://wikidocs.net/14
https://wikidocs.net/16
https://dojang.io/mod/page/view.php?id=2213

좋은 웹페이지 즐겨찾기