๐งฉ <์ฝ๋ฉํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ: ํ์ด์ฌ ํธ> 1๋ ์คํฐ๋ ๊ธฐ๋ก์ ๋๋ค.
Mutable vs Immutable
๋ฎคํฐ๋ธ ๊ฐ์ฒด(Mutable Object)
๊ฐ์ฒด ์์ฑ ํ ์์ ํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ๋ํ์ ์ผ๋ก ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, ์ ์ด ์๋ค.
๋ฆฌ์คํธ๋ก ์๋ฅผ ๋ค์ด ๋ณด์.
(1) ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๋ค.
my_list = [1, 2, 3, 4, 5]
(2) ์ด ๋ ๋ง์ง๋ง ๊ฐ์ 6์ผ๋ก ๋ณ๊ฒฝํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
my_list[4] = 6
๋จ์ํ index 4์ ๊ฐ์ 5์์ 6์ผ๋ก ์์ ํ ๊ฒ์ด๋ค. ์ด์ฒ๋ผ ์ฐธ์กฐํ ๊ณณ์ ๋์ผํ์ง๋ง ๊ฐ์ ์์ ํ ์ ์์ผ๋ฉด 'mutable'์ด๋ค.
์ด๋ฎคํฐ๋ธ ๊ฐ์ฒด(Immutable Object)
์ด๋ฎคํฐ๋ธ ๊ฐ์ฒด๋ ๊ฐ์ฒด ์์ฑ ํ ์์ ํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ค. ๋ํ์ ์ผ๋ก ์ ์, ๋ถ๋์์์ , ๋ฌธ์์ด, ํํ์ด ์๋ค.
์ ์๋ฅผ ์๋ฅผ ๋ค์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ '์์ ํ ์ ์๋ค'์ ์๋ฏธ๋ฅผ ์ดํดํด๋ณด์.
(1) ์ ์ a์ b๋ฅผ ์ ์ธํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๋๋ค.
a = 1
b = a
a๊ฐ 1์ ์ฐธ์กฐํ๊ณ , b๋ a์ ๊ฐ์ ๊ณณ, ์ฆ 1์ ์ฐธ์กฐํ๋ค.
(2) b์ ๊ฐ์ 2๋ก ์์ ํ๋ค.
b = 2
์ ์๋ ์ด๋ฎคํฐ๋ธ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ b๊ฐ ์ฐธ์กฐ๋ ๊ณณ์ ๊ฐ 1์ ๊ฐ 2๋ก ์์ ํ๋ ๊ฒ์ด ์๋๋ผ b๊ฐ ์๋ก์ด ๊ฐ์ฒด 2๋ฅผ ์ฐธ์กฐํ๋๋ก ๋ณ๊ฒฝํ๋ค.
์ปฌ๋ ์ ๋ฐ์ดํฐ ํ์
๋ฆฌ์คํธ
์ํ์ค(์์)๊ฐ ์๋ ์๋ฃํ์ผ๋ก, [ ]
๋ก ์์๋ฅผ ๊ฐ์ธ๋ ํํ์ด๋ค. ๋ฎคํฐ๋ธ ๊ฐ์ฒด์ด๋ค.
my_list = [1, 2, 3, 4, 5]
๋งจ๋์ ์ฝ์ : append
my_list.append(6) # ๊ฒฐ๊ณผ: my_list=[1, 2, 3, 4, 5, 6]
ํน์ ์ธ๋ฑ์ค์ ๊ฐ ์ญ์ : del
del my_list[0] # ๊ฒฐ๊ณผ: my_list=[2, 3, 4, 5, 6]
์ธ๋ฑ์ค
ํ์ด์ฌ ๋ฆฌ์คํธ๋ ์์ ์ธ๋ฑ์ค๋ฅผ ์ง์ํ๋ค.
๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ: list_name[a: b]
๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค a ์ด์๋ถํฐ b ๋ฏธ๋ง์ ์์๋ฅผ ์ ๋ฆฌ์คํธ์ ๋ด์ ๋ฐํํ๋ค. ์์ ์ธ๋ฑ์ค๋ก ์ด์ฉํ ์๋ ์๋ค.
sliced_list = my_list[0:3] # ๊ฒฐ๊ณผ: sliced_list=[1, 2, 3]
๋์ ๋๋ฆฌ
key: value ๊ตฌ์กฐ๋ก ๋์ด ์๋ ์๋ฃํ์ผ๋ก, { }
๋ก ๊ฐ์ธ์ง ํํ์ด๋ค. ๋ฎคํฐ๋ธ ๊ฐ์ฒด์ด๋ค.
my_dict = {}
์ฝ์
dict_name[key] = value
๋ก ์๋ก์ด key: value
๋ฅผ ์ฝ์
ํ ์ ์๋ค.
my_dict["apple"] = 1
my_dict["banana"] = 2
# ๊ฒฐ๊ณผ: my_dict = {"apple": 1, "banana": 2}
์์
dict_name[key] = new_value
๋ก ํน์ key์ value๋ฅผ ์์ ํ ์ ์๋ค.
my_dict["banana"] = 3
# ๊ฒฐ๊ณผ: my_dict = {"apple": 1, "banana": 3}
์ญ์
del(dict_name[key])
๋ก ํน์ key์ value๋ฅผ ์ญ์ ํ ์ ์๋ค.
del my_dict["apple"]
# ๊ฒฐ๊ณผ: my_dict = {"banana": 3}
ํํ
( )
๋ก ๊ฐ์ธ์ ธ ์๋ ํํ์ด๋ค. ์์๊ฐ ์๋ ์๋ฃํ์ด์ง๋ง ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ์ฝ์
, ์ญ์ ๊ฐ ๋์ง ์๋ ์ด๋ฎคํฐ๋ธ ๊ฐ์ฒด์ด๋ค. ๋ค๋ง ๋ฆฌ์คํธ์ ๊ฐ์ ๋ฌธ๋ฒ์ผ๋ก ์ธ๋ฑ์ฑ๊ณผ ์ฌ๋ผ์ด์ฑ์ ํ ์ ์๋ค.
๋๋ค์(lambda expression)
ํจ์๋ฅผ ๋ ๊ฐ๋จํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฝ๋์์ ๋ฑ ํ ๋ฒ ์คํํ๊ฑฐ๋ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ต๋ช ํจ์๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ฌ์ฉ๋ฒ
๋ณ์์ ๋๋ค์์ ํ ๋นํ๊ณ ์คํ
add = lambda x, y : x+y
print(add(1, 7)) # ๊ฒฐ๊ณผ: 8
๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ฌ์ฉ
my_list = [1, 2, 3, 4, 5] # ๋ฆฌ์คํธ ์ ์ธ
squares = list(map(lambda x: x**2, my_list)) # my_list์ ์์๋ค์ ๋ํด ์ ๊ณฑํ ์๋ค์ ๋ฆฌ์คํธ๋ก ๋ง๋ฆ
print(squares) # [1, 4, 9, 16, 25]
๋ง๋ถ์ฌ ์กฐ๊ธฐ ๋ฐํ(early return), ๋ณดํธ ๊ตฌ๋ฌธ, ํฉ์ฑ ํจ์ ๋ฑ์ ๊ธฐ๋ฒ์ ํ์ฉํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
Python์ ์ผ๊ธ ํจ์๋ฅผ ์ง์ํ๋ค.
ํ์ด์ฌ์ ํจ์๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค. ํจ์๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ ์ธ์ด๋ ์ผ๊ธ ํจ์๋ฅผ ์ง์ํ๋ค๊ณ ํ๋ค.
์ผ๊ธ ๊ฐ์ฒด
๋ค๋ฅธ ๊ฐ์ฒด๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ ์ฐ์ฐ์ ๋ชจ๋ ์ง์ํ๋ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ค. ์ผ๊ธ ๊ฐ์ฒด์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ณ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ ๋นํ ์ ์๋ค.
- ๊ฐ์ฒด์ ์ธ์๋ก ๋๊ธธ ์ ์๋ค.
- ๊ฐ์ฒด์ ๋ฐํ ๊ฐ์ผ๋ก ๋ฐํํ ์ ์๋ค.
์ผ๊ธ ํจ์
์ผ๊ธ ํจ์๋ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ค.
- ํจ์๊ฐ object ์ ํ์ ์ธ์คํด์ค์ธ ๊ฒฝ์ฐ
- ํจ์๋ฅผ ๋ณ์์ ์ ์ฅํ ์ ์๋ ๊ฒฝ์ฐ
- ํจ์๋ฅผ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ
- ํจ์์์ ๋ค๋ฅธ ํจ์๋ฅผ ๋ฐํํ ์ ์๋ ๊ฒฝ์ฐ
- ํจ์๋ฅผ ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ์ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ์ ์ ์ฅํ ์ ์๋ ๊ฒฝ์ฐ
์ถ๊ฐ ๋ฌธ์
list comprehension์ ํ์ฉํด์ 1~100๊น์ง์ ์ ์ค, 3๊ณผ 9์ ๊ณต๋ฐฐ์์ธ ์๋ง ๋ฆฌ์คํธ์ ๋ด๊ธฐ๋๋ก ๊ตฌํํด์ฃผ์ธ์.
list_comprehension = [x for x in range(1, 101) if x%3==0 and x%9==0]
List Comprehension
[expression for item in iterable if condition]
๊ตฌ์กฐ๋ก ๋ฆฌ์คํธ๋ฅผ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ ์๋ค. ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ์ผ๋ฐ์ ์ธ for ๋ฃจํ๋ณด๋ค ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋ค.
๐ Reference
์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ: ํ์ด์ฌ ํธ, ๋ฐ๊ฒฝ๋ก, ๊ณจ๋ ๋๋น.
์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ: ํ์ด์ฌ ํธ | ๋ฐ๊ฒฝ๋ก - ๊ต๋ณด๋ฌธ๊ณ
์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ: ํ์ด์ฌ ํธ | โ ์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์๊ฐ ๋๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ! โ ํ๋ก๊ทธ๋๋จธ์ค ์ ๊ณต, ์ ๋ฌธ๊ฐ๊ฐ ๋ชจ์ฌ ์์ ํ ๋น์ถ 100๋ฌธ์ ๋ก ์ฒ ์ ํ๊ฒ ๋๋นํ์ธ์์ ์ ์ฌ์ ์ฝ๋ฉ ํ ์คํธ
product.kyobobook.co.kr
[Python] First-Class Function (์ผ๊ธ ํจ์)
[Python] First-Class Function (์ผ๊ธ ํจ์)
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ํจ์๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ ๊ฒฝ์ฐ ์ผ๊ธ ํจ์๋ฅผ ์ง์ํ๋ค๊ณ ํ๋ค. Python ์ ์ผ๊ธ ํจ์๋ฅผ ์ง์ํ๋ค. (Java์ ํจ์๋ 1๊ธ ๊ฐ์ฒด๊ฐ ์๋๋ค. Kotlin์ ํจ์๋ 1๊ธ ๊ฐ์ฒด๋ผ๊ณ ํ๋ค.) ์ผ๊ธ
hyeo-noo.tistory.com
'Study > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
06. ์คํ (1) | 2024.01.21 |
---|---|
05. ๋ฐฐ์ด (1) | 2024.01.13 |
03. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ ๋ถ์ (0) | 2024.01.06 |