KR_Comprehension - somaz94/python-study GitHub Wiki
๋ฆฌ์คํธ๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
# ๊ธฐ๋ณธ ํ์
# [ํํ์ for ํญ๋ชฉ in ๋ฐ๋ณต๊ฐ๋ฅ๊ฐ์ฒด if ์กฐ๊ฑด๋ฌธ]
# ์์ 1: 0-9์ ์ ๊ณฑ ์ ๋ฆฌ์คํธ
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# ์์ 2: ์ง์๋ง ํฌํจํ๋ ๋ฆฌ์คํธ
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]
# ์์ 3: ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ
matrix = [[i+j for j in range(3)] for i in range(3)]
# [[0,1,2], [1,2,3], [2,3,4]]
โ
ํน์ง:
- ๊ฐ๊ฒฐํ ๋ฆฌ์คํธ ์์ฑ
- ์กฐ๊ฑด๋ฌธ ํฌํจ ๊ฐ๋ฅ
- ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ ์ง์
๋์
๋๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
# ๊ธฐ๋ณธ ํ์
# {ํค_ํํ์: ๊ฐ_ํํ์ for ํญ๋ชฉ in ๋ฐ๋ณต๊ฐ๋ฅ๊ฐ์ฒด}
# ์์ 1: ์ซ์:์ ๊ณฑ ์์ ๋์
๋๋ฆฌ
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# ์์ 2: ์กฐ๊ฑด๋ฌธ ํฌํจ
even_squares = {x: x**2 for x in range(5) if x % 2 == 0}
# {0: 0, 2: 4, 4: 16}
# ์์ 3: ๊ธฐ์กด ๋์
๋๋ฆฌ ๋ณํ
prices = {'apple': 2.0, 'orange': 3.0, 'banana': 1.0}
doubled = {k: v*2 for k, v in prices.items()}
# {'apple': 4.0, 'orange': 6.0, 'banana': 2.0}
โ
ํน์ง:
- ํค-๊ฐ ์ ์์ฑ
- ๊ธฐ์กด ๋์ ๋๋ฆฌ ๋ณํ
- ์กฐ๊ฑด๋ถ ํํฐ๋ง
์งํฉ์ ๊ฐ๋จํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
# ๊ธฐ๋ณธ ํ์
# {ํํ์ for ํญ๋ชฉ in ๋ฐ๋ณต๊ฐ๋ฅ๊ฐ์ฒด if ์กฐ๊ฑด๋ฌธ}
# ์์ 1: ๋ฌธ์์ด์ ๊ณ ์ ๋ฌธ์
chars = {c for c in 'hello world'}
# {'h', 'e', 'l', 'o', 'w', 'r', 'd', ' '}
# ์์ 2: ์กฐ๊ฑด๋ฌธ ํฌํจ
vowels = {c for c in 'hello world' if c in 'aeiou'}
# {'e', 'o'}
โ
ํน์ง:
- ์ค๋ณต ์ ๊ฑฐ
- ๊ณ ์ ์์ ์์ง
- ์งํฉ ์ฐ์ฐ ์ง์
๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ฐ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
# ๊ธฐ๋ณธ ํ์
# (ํํ์ for ํญ๋ชฉ in ๋ฐ๋ณต๊ฐ๋ฅ๊ฐ์ฒด if ์กฐ๊ฑด๋ฌธ)
# ์์ 1: ์ ๊ณฑ ์ ์์ฑ
squares = (x**2 for x in range(10))
# ์ ๋๋ ์ดํฐ ๊ฐ์ฒด ๋ฐํ
# ์ฌ์ฉ ์
for square in squares:
print(square) # ํ๋์ฉ ์์ฑํ์ฌ ์ถ๋ ฅ
โ
ํน์ง:
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์
- ์ง์ฐ ํ๊ฐ
- ์ดํฐ๋ ์ดํฐ ํ๋กํ ์ฝ
์ฌ๋ฌ ๋ฐ๋ณต๋ฌธ์ ์กฐํฉํ์ฌ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
# ์์ 1: 2์ฐจ์ ๋ฆฌ์คํธ ํํํ
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# ์์ 2: ์กฐ๊ฑด๋ฌธ ํฌํจํ ์ค์ฒฉ ์ปดํ๋ฆฌํจ์
result = [x+y for x in [1,2,3] for y in [10,20,30] if (x+y) % 2 == 0]
โ
ํน์ง:
- ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ฒ๋ฆฌ
- ๋ค์ค ๋ฐ๋ณต๋ฌธ ์ง์
- ์กฐ๊ฑด๋ถ ํํฐ๋ง
์ปดํ๋ฆฌํจ์
์ ์ฑ๋ฅ๊ณผ ๊ฐ๋
์ฑ ์ฌ์ด์ ๊ท ํ์ ๊ณ ๋ คํด์ผ ํ๋ค.
# ์ผ๋ฐ ๋ฐ๋ณต๋ฌธ
squares_loop = []
for i in range(10):
squares_loop.append(i**2)
# ์ปดํ๋ฆฌํจ์
squares_comp = [i**2 for i in range(10)]
# ๋๋ฌด ๋ณต์กํ ์ปดํ๋ฆฌํจ์
(๊ฐ๋
์ฑ โ)
complex_comp = [x+y for x in range(10) if x % 2 == 0
for y in range(10) if y % 3 == 0]
# ์ ํํ์ ์ผ๋ฐ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ์
better_readability = []
for x in range(10):
if x % 2 == 0:
for y in range(10):
if y % 3 == 0:
better_readability.append(x+y)
โ
ํน์ง:
- ๊ฐ๊ฒฐ์ฑ: ์ปดํ๋ฆฌํจ์ ์ด ์ผ๋ฐ ๋ฐ๋ณต๋ฌธ๋ณด๋ค ๋ ๊ฐ๊ฒฐ
- ์ฑ๋ฅ: ์ผ๋ฐ์ ์ผ๋ก ์ปดํ๋ฆฌํจ์ ์ด ๋ฏธ์ธํ๊ฒ ๋ ๋น ๋ฆ
- ๊ฐ๋ ์ฑ: ๋ณต์กํ ๊ฒฝ์ฐ ์ผ๋ฐ ๋ฐ๋ณต๋ฌธ์ด ๋ ์ฝ๊ธฐ ์ฌ์
- ๋ฉ๋ชจ๋ฆฌ: ์ ๋๋ ์ดํฐ ์ปดํ๋ฆฌํจ์ ์ด ๊ฐ์ฅ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์
์ปดํ๋ฆฌํจ์
์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ค์ด๋ค.
# ํ์ผ ๊ฒฝ๋ก ์ฒ๋ฆฌ
import os
files = [f for f in os.listdir('.') if f.endswith('.py')]
# ๋ฐ์ดํฐ ๋ณํ ๋ฐ ํํฐ๋ง
data = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 17}, {'name': 'Dave', 'age': 22}]
adults = [person['name'] for person in data if person['age'] >= 18]
# ['Alice', 'Bob', 'Dave']
# ๋จ์ด ๋น๋ ๊ณ์ฐ
text = "hello world hello python world"
word_freq = {word: text.split().count(word) for word in set(text.split())}
# {'hello': 2, 'world': 2, 'python': 1}
# ํ๋ ฌ ์ ์น
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
โ
์์ฉ ์ฌ๋ก:
- ํ์ผ ์์คํ ์์
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ๋ณํ
- ํ ์คํธ ์ฒ๋ฆฌ
- ํ๋ ฌ ์ฐ์ฐ
- API ์๋ต ๋ฐ์ดํฐ ์ฒ๋ฆฌ
โ
๋ชจ๋ฒ ์ฌ๋ก:
- ๊ฐ๋ ์ฑ์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ์ฌ์ฉ
- ๋ณต์กํ ์ปดํ๋ฆฌํจ์ ์ ์ผ๋ฐ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ฑ
- ์ ๋๋ ์ดํฐ ์ปดํ๋ฆฌํจ์ ์ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ์ฉ
- ์ค์ฒฉ๋ ์ปดํ๋ฆฌํจ์ ์ ์ ์คํ๊ฒ ์ฌ์ฉ
- ๋ผ์ธ ๊ธธ์ด 80์๋ฅผ ๋๋ ์ปดํ๋ฆฌํจ์ ์ ์ฌ๋ฌ ์ค๋ก ๋๋๊ธฐ
- ์ฃผ์์ผ๋ก ๋ณต์กํ ์ปดํ๋ฆฌํจ์ ์ ์๋๋ฅผ ์ค๋ช
- ์ค๋ณต ๊ณ์ฐ์ ํผํ๊ธฐ ์ํด ๋ณ์ ํ์ฉ
- ๊ฐ๋ฅํ๋ฉด ๋ด์ฅ ํจ์(map, filter)๋ณด๋ค ์ปดํ๋ฆฌํจ์ ์ ํธ
- ์ฌ๋ฌ ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ๋ณตํฉ ์กฐ๊ฑด๋ณด๋ค ๋ค์ค ํํฐ๋ง ๊ณ ๋ ค
- ๋ทฐํฐํ์ํ๋ ํ๋ค์ค์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์กฐํฉํ์ฌ ์ฌ์ฉ