๋ฆฌ์คํธ ์์ฑํ๋ ๋ฒ ๋ถํฐ ์ญ์ , ์์ , ์ฐ์ฐ ๋ฑ์ ํ๊ธฐ ์ํด์
์์ฃผ! ์ฌ์ฉํ๋ ํจ์๋ค์ ๋ชจ๋ ์ ๋ฆฌํด์ ์ ๋ก๋ํ๋ค.
๐ ์์ฑ
"""
1์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
"""
# ๋น์ด์๋ ๋ฆฌ์คํธ ์์ฑ
a = []
b = list()
print(a, b) # [] []
# ๋ฐ๋ณต๋ ๊ฐ ์ ์ฅํ์ฌ ์์ฑ
c = [0] * 10
print(c) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# ๋ค์ํ ํ์
์ ํ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ ๊ฒ๋ ๊ฐ๋ฅ
d = ['a', 0, True]
# ๋ฒ์ ์ง์ ํด์ ์์ฑ
e = list(range(5))
f = list(range(1, 5))
g = list(range(1, 5, 2))
print(e, f, g) # [0, 1, 2, 3, 4] [1, 2, 3, 4] [1, 3]
# map ํจ์, lambda ์ ์ฌ์ฉํ์ฌ ์์ฑ
h = list(map(lambda x: x ** 2, range(5)))
print(h) # [0, 1, 4, 9, 16]
"""
๋ค์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
"""
# 2์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
a_2 = [[0 for j in range(2)] for i in range(3)]
b_2 = [[0] * 2 for i in range(3)]
print(a_2) # [[0, 0], [0, 0], [0, 0]]
print(b_2) # [[0, 0], [0, 0], [0, 0]]
# 3์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
a_3 = [[[0 for k in range(2)] for j in range(3)] for i in range(2)]
b_3 = [[[0] * 2 for i in range(3)] for i in range(2)]
print(a_3) # [[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]
print(b_3) # [[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]
"""
ํฑ๋ํ ๋ฆฌ์คํธ ์์ฑ
"""
jagged = [[0] * i for i in [1, 3, 2, 5]]
print(jagged) # [[0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]
๐ ์ฝ์ , ์ญ์ , ์์
"""
๋ฆฌ์คํธ ๊ฐ ์ฝ์
, ์ญ์ , ์์ (append, insert, extend, remove, map ๋ฑ)
"""
a = ['a', 'b']
b = [1, 2, 3]
# ๋งจ ๋ค์ ์ถ๊ฐ
a.append('c')
print(a) # ['a', 'b', 'c']
# ๋ํ๊ธฐ ์ฐ์ฐ์ผ๋ก ๋งจ ๋ค์ ์ถ๊ฐ (๋ฆฌ์คํธ ํํ, ๊ฐ ํํ ๋ชจ๋ ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ๋๋ก -์ฐ์ฐ์ ๋ถ๊ฐ)
a += ['d']
a += 'e'
print(a) # ['a', 'b', 'c', 'd', 'e']
# ์ํ๋ ์ธ๋ฑ์ค์ ๊ฐ ์ถ๊ฐ
a.insert(0, 'zero')
print(a) # ['zero', 'a', 'b', 'c', 'd', 'e']
# ๋งจ ๋ค์ ๋ฆฌ์คํธ ๋ํ๊ธฐ
a.extend([1, 2])
print(a) # ['zero', 'a', 'b', 'c', 'd', 'e', 1, 2]
# ์ํ๋ ์์ ์ง์ฐ๊ธฐ
a.remove('zero')
print(a) # ['a', 'b', 'c', 'd', 'e', 1, 2]
# map ํจ์, lambda ์์ ํ์ฉํ ํ๋ณํ, ๊ฐ ์์
print(list(map(lambda x: str(x), b))) # ['1', '2', '3']
print(list(map(str, b))) # ['1', '2', '3']
print(list(map(lambda x: str(x) if x < 2 else x, b))) # ['1', 2, 3]
print(list(map(lambda x: x+1, b))) # [2, 3, 4]
print(list(map(lambda x: list(range(0, x)), b))) # [[0], [0, 1], [0, 1, 2]]
๐ ์ ๋ ฌ
"""
๋ฆฌ์คํธ ์ ๋ ฌ (sort, sorted, reverse, reversed, slicing)
"""
# sorted๋ ์ ๋ ฌ๋ ๊ฐ์ ๋ฐํํ์ง๋ง, ๋ฆฌ์คํธ ์์ฒด๋ฅผ ์ ๋ ฌํ์ง๋ ์์
# sort๋ ์ ๋ ฌ๋ ๊ฐ์ ๋ฐํํ์ง ์์ง๋ง, ๋ฆฌ์คํธ ์์ฒด๋ฅผ ์ ๋ ฌํด์ค
b = [2, 3, 1]
print(sorted(b)) # [1, 2, 3]
print(sorted(b, reverse = True)) # [3, 2, 1]
print(b) # [2, 3, 1]
print(b.sort()) # None
print(b) # [1, 2, 3]
b.sort(reverse = True)
print(b) # [3, 2, 1]
# reverse๋ sort์ ๊ฐ์ด ๋ค์ง์ ๊ฐ์ ๋ฐํํ์ง๋ ์๊ณ , ๋์ ๋ฆฌ์คํธ ์์ฒด๋ฅผ ๋ค์ง์ด์ค
# reversed๋ reverse์๋ ๋ฌ๋ฆฌ list์์ ์ ๊ณตํ์ง ์๋ ๋ด์ฅํจ์์
# => ๋ฐ๋ผ์ list(reversed(c))์ ๊ฐ์ ํํ๋ก ์ฌ์ฉํด์ฃผ์ด์ผ ํจ (sorted์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ฐํ๋ง ํ ๋ฟ ๋ฆฌ์คํธ ์์ฒด๋ฅผ ์์ ํ์ง๋ ์์)
c = [1, 2, 2, 3]
print(reversed(c)) # <list_reverseiterator object at 0x10b4c6880>
print(list(reversed(c))) # [3, 2, 2, 1]
print(c.reverse()) # None
print(c) # [3, 2, 2, 1]
# ์ฌ๋ผ์ด์ฑ์ ํ์ฉํ๋ฉด list(reversed(c))์ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์
print(c[::-1]) # [1, 2, 2, 3]
# key ํค์๋
# sort, sorted ํจ์ ๋ชจ๋ reverse ๋ฟ๋ง ์๋๋ผ key ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ค.
# key๋ ์ ๋ ฌ์ ๋ชฉ์ ์ผ๋ก ํ๋ ํจ์๋ฅผ ๊ฐ์ผ๋ก ๋ฃ๋๋ฐ, lambda๋ฅผ ์ด์ฉํ ์ ์๋ค.
# key๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๊ณ , ๊ธฐ๋ณธ๊ฐ์ ์ค๋ฆ์ฐจ์์ด๋ค.
d = ['apple', 'hi', 'hello', 'e']
e = [(2, 'a'), (3, 'b'), (1, 'd'), (1, 'c')]
d.sort(key = lambda x: len(x)) # ๊ฐ ์์์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
e.sort(key = lambda x: (x[0], x[1])) # ํํ์ ์ ์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ, ๊ฐ์ ๊ฒฝ์ฐ ๋ท ์์ ๊ธฐ์ค ์ ๋ ฌ
print(d) # ['e', 'hi', 'apple', 'hello']
print(e) # [(1, 'c'), (1, 'd'), (2, 'a'), (3, 'b')]
๐ ๊ฒ์, ์ฐ์ฐ
"""
๋ฆฌ์คํธ ๊ฒ์, ์ฐ์ฐ (slicing, all, any, max, min, enumerate, filter, sum, reduce, zip, len ๋ฑ)
"""
list_a = [1, 2, 3]
list_b = [1, 0, 0]
list_c = ['a', 'b', 'c']
# ํ์ด์ฌ์์๋ ์ธ๋ฑ์ค๋ก -1์ ์
๋ ฅํ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ์์๋ฅผ ๊ฐ๋ฆฌํด
print(list_a[-1]) # 3
# ์ฌ๋ผ์ด์ฑ์ ํ์ฉํ๋ฉด ๋ฆฌ์คํธ ์์ฒด๋ ๊ทธ๋๋ก ๋๊ณ , ์ํ๋ ๋ฒ์์ ๊ฐ๋ค์ ๋ฐํํด์ค
print(list_a[0:2]) # [1, 2]
print(list_a[:2]) # [1, 2]
print(list_a[2:]) # [3]
# all์ ํ๋๋ผ๋ 0(False)๊ฐ ์์ผ๋ฉด False๋ฅผ ๋ฐํํด์ค (์ ๋ถ ๋ค True์ฌ์ผ True๋ก ์ธ์ )
# any๋ ํ๋๋ผ๋ 1(True)๊ฐ ์์ผ๋ฉด True๋ฅผ ๋ฐํํด์ค (๋ช ๊ฐ๋ง True์ฌ๋ True๋ก ์ธ์ )
print(all(list_a)) # True
print(all(list_b)) # False
print(any(list_a)) # True
print(any(list_b)) # True
# ์ต๋, ์ต์
print(max(list_a)) # 3
print(min(list_a)) # 1
# ์ด๊ฑฐํ๋ ํจ์๋ก, ์์๊ฐ ์๋ ์๋ฃํ์ ์
๋ ฅ์ผ๋ก ๋ฐ์์ ์ธ๋ฑ์ค ๊ฐ์ ํฌํจํ๋ enumerate ๊ฐ์ฒด๋ฅผ ๋ฐํ (๋ณดํต for ๋ฌธ์ผ๋ก ๋ง์ด ์ฌ์ฉ)
for i, name in enumerate(list_c):
print(i, name)
# 0 a
# 1 b
# 2 c
# filter ํจ์, lambda ์์ ํ์ฉํ ๊ฐ ๊ฒ์
print(list(filter(lambda x: x == 0, list_b))) # [0, 0]
# ๋ชจ๋ ์์์ ํฉ
print(sum(list_a)) # 6
# ๋์ ์ฐ์ฐ (ํ์ด์ฌ3์์๋ reduce ์ฌ์ฉํ๋ ค๋ฉด ์๋์๊ฐ์ ์ ์ธ ํ์)
from functools import reduce
print(reduce(lambda x, y: x + y, list_a)) # 6
# ๋ฌถ์ด์ฃผ๊ธฐ (๊ฐ์ ์ธ๋ฑ์ค ์์๋ผ๋ฆฌ ๋ฌถ์ด์ค)
print(list(zip(list_a, list_b))) # [(1, 1), (2, 0), (3, 0)]
print(list(zip(list_a, list_b, list_c))) # [(1, 1, 'a'), (2, 0, 'b'), (3, 0, 'c')]
# ๊ธธ์ด
print(len(list_a)) # 3
๋๊ธ