Python Tutorial - List Tuple, Dic, Set
Python Tutorial - List, Set, Dict, Tuple
Reference
์ ํ ํฌ ํ์ด์ฌ:๋ฐ์์ฉ
https://wikidocs.net/book/1
Overview
Python ๊ฐ์ฒด์๋ mutable๊ณผ immutable ๊ฐ์ฒด๊ฐ ์์ต๋๋ค.
Mutable: ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ๊ฐ ์์ ๊ฐ๋ฅ
Immutable: ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ๊ฐ ์์ ๋ถ๊ฐ๋ฅ. ๊ธฐ์กด ๋ณ์๊ฐ์ ์์ ํ ์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ์์ ์์ฑ๋จ
๊ฐ์ฒด ์งํฉ์, mutable ๋ฐ ์์ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ค์ํ ๊ฐ์ฒดํํ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
list
[ ]
mutable, ์์๊ฐ ์๋ ๊ฐ์ฒด ์งํฉ
mutable
tuple
( )
immutable, ์์๊ฐ ์๋ ๊ฐ์ฒด ์งํฉ
immutable
dict
{ }
mutable, ์์ ์๊ณ , key์ value๊ฐ ๋งตํ๋ ๊ฐ์ฒด
mutable
set
{ : }
mutable, ์์ ์๋ ๊ณ ์ ํ ๊ฐ์ฒด ์งํฉ
mutable
List
์์๊ฐ ์๋ ์์ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ์งํฉ์ ๋๋ค.
list ๋
[]
๋๊ดํธ๋ก ์์ฑ๋์ด์ง๋ฉฐ, ๋ด๋ถ ์์๋,
๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
Tuple
tuple(ํํ)์ ๋ถ๋ณํ ์์๊ฐ ์๋ ๊ฐ์ฒด์ ์งํฉ์ ๋๋ค.
listํ๊ณผ ๋น์ทํ์ง๋ง ํ ๋ฒ ์์ฑ๋๋ฉด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
Dictionary
immutableํ ํค(key)์ mutableํ ๊ฐ(value)์ผ๋ก ๋งตํ๋์ด ์๋ ์์๊ฐ ์๋ ์งํฉ์ ๋๋ค.
ํค๋ก๋ immutableํ ๊ฐ์ ์ฌ์ฉํ ์ ์์ง๋ง, mutableํ ๊ฐ์ฒด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค๊ดํธ๋ก ๋์ด ์๊ณ ํค์ ๊ฐ์ด ์์ต๋๋ค.
{"a" : 1, "b":2}
Set
์์๊ฐ ์๊ณ , ์งํฉ์์์๋ uniqueํ ๊ฐ์ ๊ฐ์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ mutable ๊ฐ์ฒด์ ๋๋ค.
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ dictionary์ ๋น์ทํ์ง๋ง, key๊ฐ ์์ต๋๋ค. ๊ฐ๋ง ์กด์ฌํฉ๋๋ค.
s = {3, 5, 7}
Examples
# List
a = [1, 3, 5, 7]
b= ['c', 354, True]
# Tuplet
t = (1, "korea", 3.5, 1)
# Dict
dic_a = {1: 5, 2: 3}
dic_b = {(1,5): 5, (3,3): 3} # immutable tuple๋ง Key๋ก ๊ฐ๋ฅ
dic_c = { 3.6: 5, "abc": 3}
# Set
s = {3, 5, 7}
s = {"1", 3, 5, (1,3)} # immutable tuple๋ง element๋ก ๊ฐ๋ฅ
LIST ์ฌ์ฉ์์
์์๊ฐ ์๋ ์์ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ์งํฉ์ ๋๋ค.
list ๋
[]
๋๊ดํธ๋ก ์์ฑ๋์ด์ง๋ฉฐ, ๋ด๋ถ ์์๋,
๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
Index, Slicing
๋ฆฌ์คํธ๋ณ์[์์์ธ๋ฑ์ค:์ข ๋ฃ์ธ๋ฑ์ค:step]
์ข ๋ฃ์ธ๋ฑ์ค์ ์์๋ ํฌํจ๋์ง ์๊ณ ๋ฐ๋ก ์ ์์๊น์ง๋ง ํฌํจ๋ฉ๋๋ค. step์ ์๋ต๋ฉ๋๋ค.
a = [1, 3 , 5, 7] # a[0] ~ a[3] ์ ๊ทผ ๊ฐ๋ฅ
a[-1] # >> 7 -1 ์ญ์ ์ธ๋ฑ์ฑ
a[1:-1] # >> [3,5,7]
a[:2] # >> [1,3]
a.index(3) # >> 1
a.append(5) # >> a = [1, 3 , 5, 7, 5]
a+ [ 2, 7] # >> a=[1, 3, 5, 7, 2, 7]
list("๊ฐ๋๋ค") # >> ['๊ฐ', '๋', '๋ค']
Tuple ์ฌ์ฉ์์
List์ ๊ฑฐ์ ๋์ผํ์ง๋ง, ํํ์ ์์๊ฐ์ ๋ฐ๊ฟ ์ ์๋ค.
const ์ฑ๋ฅ์ผ๋ก ์ฌ์ฉํ ๋ ์ ์ฉํจ
ta = (1, "korea", 3.5, 1)
tb= 1,2,5 # tuple๋ก ์ธ์
tc = (1,) # 1๊ฐ element ์ด๋ฉด, ์ผํ๊ฐ ์์ด์ผ ํจ
Dictionary ์ฌ์ฉ์์
๊ฐ์ ์ค๋ณต๋ ์ ์์ง๋ง, ํค๊ฐ ์ค๋ณต๋๋ฉด ๋ง์ง๋ง ๊ฐ์ผ๋ก ๋ฎ์ด์์์ง๋๋ค.
์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ก๋ ์ ๊ทผํ ์ ์๊ณ , ํค๋ก ์ ๊ทผ ํ ์ ์์ต๋๋ค.
ํค๋ก๋ immutableํ ๊ฐ์ ์ฌ์ฉํ ์ ์์ง๋ง, mutableํ ๊ฐ์ฒด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
dica={"a" : 1, "b":2}
dicb = { True: 5, "abc": 3}
dicc = {[1,3]: 5, [3,5]: 3} # gives ERROR, used mutable list in KEY
dicc = {'a': [1, 2, 3]} # OK, to use mutable list in VALUE
dicd={"a" : 1, "a":2} # {'a': 2}, Key ์ค๋ณต์ ๋ฎ์ด์ง
querya= dica[0] # gives ERROR
querya= dica['a'] # >> querya=1
dica= {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
dica.keys() # >> dict_keys(['name', 'phone', 'birth'])
dica.values() # >> dict_values(['pey', '010-9999-1234', '1118'])
dica.items() # Key์ Value์ ์์ ํํ๋ก ๋ฌถ์ ๊ฐ์ dict_items ๊ฐ์ฒด๋ก ๋ฆฌํดํ๋ค. >> dict_items([ ...])
for k in dica.keys():
... print(k) # >> name, phone, birth
Set ์ฌ์ฉ์์
์์๊ฐ ์๊ณ , ์งํฉ์์์๋ uniqueํ ๊ฐ์ ๊ฐ์ง๋๋ค.
set์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ํน์ง ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํ ํํฐ๋ก ์ข ์ข ์ฌ์ฉ๋๋ค
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ dictionary์ ๋น์ทํ์ง๋ง, key๊ฐ ์์ต๋๋ค. ๊ฐ๋ง ์กด์ฌํฉ๋๋ค.
set(์งํฉ) ๋ด๋ถ ์์๋ ๋ค์ํ ๊ฐ์ ํจ๊ป ๊ฐ์ง ์ ์์ง๋ง, mutableํ ๊ฐ์ ๊ฐ์ง์ ์์ต๋๋ค.
๋ฆฌ์คํธ๋ ํํ์ ์์๊ฐ ์๊ธฐ(ordered) ๋๋ฌธ์ ์ธ๋ฑ์ฑ์ ํตํด ์์๊ฐ์ ์ป์ ์ ์์ง๋ง, set ์๋ฃํ์ ์์๊ฐ ์๊ธฐ(unordered) ๋๋ฌธ์ ์ธ๋ฑ์ฑ์ ํตํด ์์๊ฐ์ ์ป์ ์ ์๋ค.
๋ง์ฝ set ์๋ฃํ์ ์ ์ฅ๋ ๊ฐ์ ์ธ๋ฑ์ฑ์ผ๋ก ์ ๊ทผํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ๋ ํํ๋ก ๋ณํํ ํ์ ํด์ผ ํ๋ค.
s1 = {3, 5, 7}
s2 = set([1, 2, 3])
s3 = set("Hello") # >> {'e', 'H', 'l', 'o'} , ์ค๋ณต ํ์ฉํ์ง ์๊ณ , ์์๊ฐ ์๋ค
l1 = list(s1) # >> [3, 5, 7]
l1[0] # >> 3
s4 = set([1, 2, 3])
s4.update([4, 5, 6]) # >> s4={1, 2, 3, 4, 5, 6}
s4.add(50) # >>> s4={1, 50, 3}
19. for in ๋ฐ๋ณต๋ฌธ, Range, enumerate
1. for in ๋ฐ๋ณต๋ฌธ
์ฌํ ๋ค๋ฅธ ์ธ์ด์์๋ ์ผ๋ฐ์ ์ธ for๋ฌธ, foreach๋ฌธ, for of๋ฌธ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ์์ ํ๊บผ๋ฒ์ ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Python์์๋ for in๋ฌธ ํ๊ฐ์ง ๋ฐฉ์์ for ๋ฌธ๋ง ์ ๊ณตํฉ๋๋ค.
REPL ์์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
for in ๋ฌธ ํ์ ์ ๋๋ค.
iterable์ ์ฌ์ ์ ์๋ฏธ์ ๋๊ฐ์ด ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋งํฉ๋๋ค.
for item in iterable:
... ๋ฐ๋ณตํ ๊ตฌ๋ฌธ...
iterable ๊ฐ์ฒด๋ฅผ ํ๋ณํ๊ธฐ ์ํด์๋ ์๋์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
collections.Iterable์ ์ํ instance์ธ์ง ํ์ธํ๋ฉด ๋ฉ๋๋ค.
isinstance ํจ์๋ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๊ฐ ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ ํด๋์ค์ instance์ด๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.
์์ ๋ค๋ฃฌ ํ์ ์ค list, dictionary, set, string, tuple, bytes๊ฐ iterableํ ํ์ ์ ๋๋ค.
range๋ iterable ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํธ ์๋์ชฝ์์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
for๋ฌธ์ ๋์์์ผ๋ด ๋๋ค.
Copy>>> for i in var_list:
... print(i)
...
1
3
5
7
2. range
์์ชฝ for๋ฌธ์ range ๊ฒฐ๊ณผ ๊ฐ์ด 0, 1, 2, 3, 4 ์์๋๋ก ๊ฒฐ๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋์์ต๋๋ค.
range๋
range(์์์ซ์, ์ข ๋ฃ์ซ์, step)
์ ํํ๋ก ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ๊ณผ ์ ์ฌํฉ๋๋ค.range์ ๊ฒฐ๊ณผ๋ ์์์ซ์๋ถํฐ ์ข ๋ฃ์ซ์ ๋ฐ๋ก ์ ์ซ์๊น์ง ์ปฌ๋ ์ ์ ๋ง๋ญ๋๋ค.
์์์ซ์์ step์ ์๋ต๊ฐ๋ฅํฉ๋๋ค.
>>> range(5)
range(0, 5)
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
range๋ ๊ฐ์ ํ์ธํ๊ธฐ ์ํด์ ๋ค๋ฅธ ์์ ์๋ ์ปฌ๋ ์ ์ผ๋ก ๋ณํํด์ผํฉ๋๋ค.
>>> range(5,10)
range(5, 10)
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> tuple(range(5,10))
(5, 6, 7, 8, 9)
step์ ์ฌ์ฉํด๋ด ๋๋ค.
Copy>>> list(range(10,20,2))
[10, 12, 14, 16, 18]
>>> list(range(10,20,3))
[10, 13, 16, 19]
3. enumerate
๋ฐ๋ณต๋ฌธ ์ฌ์ฉ ์ ๋ช ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ธ์ง ํ์ธ์ด ํ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉํฉ๋๋ค.
์ธ๋ฑ์ค ๋ฒํธ์ ์ปฌ๋ ์ ์ ์์๋ฅผ tupleํํ๋ก ๋ฐํํฉ๋๋ค.
>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
... print(p)
...
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
tupleํํ ๋ฐํ์ ์ด์ฉํ์ฌ ์๋์ฒ๋ผ ํ์ฉํ ์ ์์ต๋๋ค.
>>> for i, v in enumerate(t):
... print("index : {}, value: {}".format(i,v))
...
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52
Was this helpful?