๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
4๏ธโƒฃ Python/Python ์ •๋ฆฌ

[Python] ๋ฆฌ์ŠคํŠธ ๊ด€๋ จ ํ•จ์ˆ˜ ์ด์ •๋ฆฌ!

by seolhee2750 2021. 11. 15.

๋ฆฌ์ŠคํŠธ ์ƒ์„ฑํ•˜๋Š” ๋ฒ• ๋ถ€ํ„ฐ ์‚ญ์ œ, ์ˆ˜์ •, ์—ฐ์‚ฐ ๋“ฑ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ

์ž์ฃผ! ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋“ค์„ ๋ชจ๋‘ ์ •๋ฆฌํ•ด์„œ ์—…๋กœ๋“œํ•œ๋‹ค.

 

๐Ÿ“Œ ์ƒ์„ฑ

"""
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

๋Œ“๊ธ€