Hello๐ I'm Dona!:)
์ง๋ list sorting(2) ํฌ์คํ ์์ ๋๋ค ํจ์๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋๊ธ๋ก ์ง๋ฌธ์ด ์์ด์ ์ค๋นํ์ต๋๋ค!
์ ๋ ์ฒ์ ๋๋ค ํจ์๋ฅผ ๋ดค์ ๋๋, ์ด๋ ค์ ๋ณด์ฌ์ ๋๋ ค์ ๋๋ฐ ๋ง์ ์ฌ์ฉํด ๋ณด๋ ๋ณ๊ฑฐ์๋๋๋ค!
์์ฒญ ํธ๋ฆฌํ ๋ ์์ด๋ ๊ผญ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค์ด ๊ฐ์๋ค! โ๐ป๐ฅ
- ์ง๋ ํฌ์คํ : https://imdona.tistory.com/14
๐ฅ ๋๋ค(lambda) ํจ์๋?
๋๋ค ํจ์๋ ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด, ํจ์ ์ด๋ฆ ์์ด ํ ์ค๋ก ํํํ๋ ์ฌ์ฉ์ ์ ์ ํจ์ ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค! ๐
๊ธฐ์กด ์ฌ์ฉ์ ์ ์ ํจ์์ ๋ค๋ฅด๊ฒ ํจ์์ ์ด๋ฆ์ ์ง์ด์ฃผ์ง ์๊ณ 1ํ์ฉ์ผ๋ก ์ฌ์ฉํด์! ๊ทธ๋์ "์ต๋ช ํจ์"๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
๐ Why do we use this?
1. ์ฝ๋์ ๊ฐ๊ฒฐํจ
2. ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฝ
1๋ฒ์ ์๊ฐ์ ์ผ๋ก ํ๋์ ๋ฑ! ๋๊ปด์ง์๋์? โบ๏ธ
2๋ฒ์ ์กฐ๊ธ ๋ ์์ธํ๊ฒ ์ค๋ช ์ ๋๋ฆฌ๋ฉด, ์ฌ์ฉ์ ์ ์ ํจ์๋ก ํจ์๋ฅผ ๋ง๋ค๋ฉด, ํจ์๋ผ๋ ๊ฐ์ฒด๊ฐ ์๊ฒจ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ณ ๋ณ์๋ฅผ ํตํด ์์ ์ด ํธ์ถ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ์ 1ํ์ฉ์ผ๋ก ํ ๋ฒ๋ง ์ฌ์ฉํ ํจ์๋ผ๋ฉด ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๊ฒ ์ฃ ?! 1
๋ฌผ๋ก ํ์ด์ฌ์์ ๋ณ์์ ์ฐธ์กฐ๋ฅผ ๋์ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ง๋ง, ๊ทธ๋ฐ ํ์๋ฅผ ํ๋ ๊ฒ ์์ฒด๊ฐ ๋ ๋ค๋ฅธ ๋ญ๋น๊ฐ ๋๊ฒ ์ฃ ( •ฬ ฬฏ•ฬ )
๐ป Code Example
1. List Comprehension Exampleโจ + map & filter
์ง๋ ํฌ์คํ ์์ ๋ฐฐ์ ๋ List Comprehension๊ณผ ๊ฐ์ด ์ ์ฉํด ๋ด ์๋ค!
nums๋ผ๋ list์์
1) ๊ฐ ์์๋ค์ ๋ชจ๋ ์ ๊ณฑํด์ result๋ผ๋ list๋ฅผ ๋ง๋ค๊ณ ์ถ์ ์ํฉ
2)๊ฐ ์์๋ค์ ๋ชจ๋ ์ ๊ณฑํ๋, ๊ทธ์ค ์ง์๋ง ๊ณจ๋ผ์ esult๋ผ๋ list๋ฅผ ๋ง๋ค๊ณ ์ถ์ ์ํฉ์ ๋๋ค.
๊ฐ์ด ์ข ์กํ์๋์?!
nums = [1, 2, 3, 4]
'''1)List Comprehension'''
result = [x*x for x in nums]
# result == [1, 4, 9, 16]
result = [x*x for x in nums if x%2==0] #ํํฐ์ ์กฐ๊ฑด๋ถ๋ฅผ ์ถ๊ฐ
# result == [4, 16]
'''2)Map + Filter'''
result = list(map(lambda x: x*x, nums))
# result == [1, 4, 9, 16]
result = list(map(lambda x: x*x, filter(lambda x: x%2==0, nums)))
# result == [4, 16]
2. map(function, iterable)
map ํจ์๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ ๋ง ์์ผ๋ฉด ์ ๋๋ ๋
์์ธ๋ฐ์! (ํจ์..)
iterableํ ๊ฐ์ฒด ์์ ๋ค์ด์๋ ์์๋ค์ ํจ์๋ฅผ ์ ์ฉ์์ผ ์๋ก์ด iterableํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋! ์ฌ์ฉํด ์ฃผ์ธ์๐ฅ
'''์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์์ ํํ ๋ง๋๋ input ๋์์ ๋ฐ๋ ์ํฉ'''
# map์ ์ฐ๋ฉด ์๋์ ๊ฐ์ด ๊ฐ๋จ
a, b = map(int, input().split())
# map ์์ด ํ๋ฉด?
a, b = input().split()
a = int(a)
b = int(b)
# ์๋ฅผ ๋ค์ด '1 2'๊ฐ input์ผ ๋, ์๋์ ๊ฐ์ด ๊ฐ๊ฐ ์์๊ฒ intํ์ผ๋ก ์ ์๋ฉ๋๋ค.
a = 1
b = 2
โ [์ฐธ๊ณ ] map์ ๋ํ ๊ฐ๋ ์ถ๊ฐ
1) map์ผ๋ก ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ถ์ ๋๋ list๋ก ๋ฐ์ดํฐ ํ์ ์ ๋ณํํ์ฌ printํด์ผํจ! ๊ทธ๋ฅ printํ๋ฉด, ๊ฐ์ฒด๊ฐ ์ถ๋ ฅ
2) for๋ฌธ์ ๋๋๋ list๋ก ๋ณํํ์ง์์๋ ๊ด์ฐฎ๋ค -> ๊ทธ ์ด์ ๋ range์ฒ๋ผ map object์์ ํ๋์ฉ ๊บผ๋ด์ ๋ณด์ฌ์ฃผ๊ธฐ๋๋ฌธ์!
'''์๋ ์์์ฒ๋ผ list๋ก ๋ฐ์ ๋
1. map์ผ๋ก ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ถ์ ๋๋ list๋ก ๋ฐ์ดํฐ ํ์
์ ๋ณํํ์ฌ printํด์ผํจ!
๊ทธ๋ฅ printํ๋ฉด ๊ฐ์ ๋ณผ ์ ์์(๊ฐ์ฒด๊ฐ ์ถ๋ ฅ๋๋ค)
2. for๋ฌธ์ ๋๋๋ list๋ก ๋ณํํ์ง์์๋ ๊ด์ฐฎ๋ค -> ๊ทธ ์ด์ ๋ range์ฒ๋ผ map object์์ ํ๋์ฉ ๊บผ๋ด์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์!
'''
numbers = map(int, list(input().split()))
# 1) numbers๋ผ๋ list๋ฅผ ํ์ธํ๊ณ ์ถ์ ๋
print(numbers) # out : <map object at 0x1044b2260>
print(list(numbers)) # out : [1, 3, 5, 7]
# 2) for๋ฌธ์ ๋๋ฉฐ ์์๋ฅผ ํ์ธํ ๋
for num in numbers:
condition = True
if num <= 1:continue
for i in range(2, num):
if num % i == 0:
condition = False
break
โ [์ฐธ๊ณ ] iterable ๊ฐ์ฒด?
์๋์ documentation์ ์ฐธ๊ณ ํ์ฌ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด์.
- ๋ฉค๋ฒ๋ฅผ ํ ๋ฒ์ ํ๋์ฉ ๋ฐํํ ์ ์๋ ๊ฐ์ฒด
- ์ : ๋ชจ๋ ์ํ์ค์ ํ(๋ฆฌ์คํธ, ์คํธ๋ง, ํํ ๋ฑ)๊ณผ dict, ํ์ผ์ค๋ธ์ ํธ, ์ค๋ธ์ ํธ ๋ฑ ์ผ๋ถ ๋น์ํ์ค์ ํ
3. filter(function, iterable)
์ฝ๊ฒ ์๊ฐํ๋ฉด ์์ด์ปจ ํํฐ, ์ ์๊ธฐ ํํฐ์ฒ๋ผ ์ํ๋ ๊ฒ์ ๊ฑธ๋ฌ์ค๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
iterable ๊ฐ์ฒด ์์ ๋ค์ด์๋ ์์๋ค์ ํจ์๋ฅผ ์ ์ฉ์์ผ์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๊ฐ๋ค๋ก ์๋ก์ด iterable ๊ฐ์ฒด ๋ง๋ค๊ณ ์ถ์ ๋! ์ฌ์ฉํด ์ฃผ์ธ์๐ฅ
1. ํน์ ์กฐ๊ฑด์ผ๋ก ๊ฑธ๋ฌ์ ๊ฑธ๋ฌ์ง ์์๋ค๋ก iterator ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ฆฌํด -> list๋ฅผ ๋ณด๊ณ ์ถ์ผ๋ฉด ๊ผญ list ํ์ ์ผ๋ก ๋ฐ๊ฟ์ฃผ์ธ์! โจ
2. map ํจ์์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋์ผํ๋, ํจ์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ์ง ๊ฑฐ์ง์ธ์ง์ ๋ฐ๋ผ, ํด๋น ์์๋ฅผ ํฌํจํ ์ง๋ฅผ ๊ฒฐ์
3. ํจ์๋ฅผ 1ํ์ฉ์ผ๋ก ์ฌ์ฉํ ๋๋, ๊ฐ๊ฒฐํ๊ฒ lambda ํจ์์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ข๋ค๐
'''filterํจ์ ๊ธฐ๋ณธ ์๊น์'''
filter(ํจ์, ๋ฆฌ์คํธ)
'''example'''
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def even(n):
return True if n % 2 == 0 else False
result = filter(even, nums)
print(result)
# <filter object at 0x103bfe0b0>
print(list(result))
# [2, 4, 6, 8, 10]
'''lambda & filter'''
result = filter(lambda x : x%2==0, nums)
์ด๋ ค์ด ์ฒํ์ง๋ง ์๊ณ ๋ณด๋ฉด ์ฌ์ด ๋ ์๋ค์ ์ฝ๋ ์์ ์ ํจ๊ป ์์๋ณด์์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค โบ๏ธ
ํ๋ฆฐ ๋ด์ฉ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์ :) GO FOR IT!! BYE!! ๐
๐ REFERENCE
- https://wikidocs.net/22804
- https://wikidocs.net/64
- https://wikidocs.net/22803
- https://jsp-dev.tistory.com/132
- ๊ฐ์ฒด๋ ๋ค๋ฅธ ํฌ์คํ ์์ ์์ธํ๊ฒ ๋ค๋ฃฐ๊ฒ์, ์ฐ์ ์ ํ์ด์ฌ์ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ์์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ผ๋ ๊ฒ๋ง ์๊ณ ๋์ด๊ฐ์๋ค! (๋จผ์ ๊ถ๊ธํ๋ฉด ๊ตฌ๊ธ๋ง!๐) [๋ณธ๋ฌธ์ผ๋ก]