๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ (List Comprehension)
ํ์ด์ฌ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ๊ฐ๊ฒฐํ๊ฒ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๋ฉด์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
[ํํ์ for ํญ๋ชฉ in iterable if ์กฐ๊ฑด]
- ํํ์: ๊ฐ ํญ๋ชฉ์ ๋ํ ๊ณ์ฐ์ ๋๋ ํํ์์ ๋ํ๋
๋๋ค.
- ํญ๋ชฉ: ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable) ๊ฐ์ฒด์์ ๊ฐ์ ธ์จ ๊ฐ์
๋๋ค.
- iterable: ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(๋ฆฌ์คํธ, ํํ, ๋ฌธ์์ด ๋ฑ)๋ฅผ ๋ํ๋
๋๋ค.
- ์กฐ๊ฑด: ์ ํ์ ์ผ๋ก ํฌํจํ ์กฐ๊ฑด์ ์ง์ ํฉ๋๋ค. ์กฐ๊ฑด์ ํ์์ ๋ฐ๋ผ ์๋ตํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, 0๋ถํฐ 9๊น์ง์ ์ซ์ ์ค์์ ์ง์๋ง์ ์ ๊ณฑํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ:
squares = [x**2 for x in range(10) if x % 2 == 0] print(squares) # ์ถ๋ ฅ: [0, 4, 16, 36, 64]
๋ ๋ค๋ฅธ ์๋ก, ๋ฌธ์์ด ๋ฆฌ์คํธ์์ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 3 ์ด์์ธ ๋ฌธ์์ด๋ง ์ ํํ๋ ๊ฒฝ์ฐ:
words = ["apple", "banana", "kiwi", "orange", "grape"] filtered_words = [word for word in words if len(word) >= 3] print(filtered_words) # ์ถ๋ ฅ: ['apple', 'banana', 'kiwi', 'orange', 'grape']
๋์ ๋๋ฆฌ ์ปดํ๋ฆฌํจ์ (Dictionary Comprehension)
ํ์ด์ฌ ๋์
๋๋ฆฌ ์ปดํ๋ฆฌํจ์
์ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
๊ณผ ์ ์ฌํ๊ฒ ์ฌ์ฉ๋๋ฉฐ, ๋์
๋๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฐ๊ฒฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋์
๋๋ฆฌ ์ปดํ๋ฆฌํจ์
์ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
{ํค_ํํ์: ๊ฐ_ํํ์ for ํญ๋ชฉ in iterable if ์กฐ๊ฑด}
- ํค_ํํ์: ๊ฐ ํญ๋ชฉ์์ ์ถ์ถํ ํค๋ฅผ ๋ํ๋ด๋ ํํ์์
๋๋ค.
- ๊ฐ_ํํ์: ๊ฐ ํญ๋ชฉ์์ ์ถ์ถํ ๊ฐ์ ๋ํ๋ด๋ ํํ์์
๋๋ค.
- ํญ๋ชฉ: ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable) ๊ฐ์ฒด์์ ๊ฐ์ ธ์จ ๊ฐ์
๋๋ค.
- iterable: ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(๋ฆฌ์คํธ, ํํ, ๋ฌธ์์ด ๋ฑ)๋ฅผ ๋ํ๋
๋๋ค.
- ์กฐ๊ฑด: ์ ํ์ ์ผ๋ก ํฌํจํ ์กฐ๊ฑด์ ์ง์ ํฉ๋๋ค. ์กฐ๊ฑด์ ํ์์ ๋ฐ๋ผ ์๋ตํ ์ ์์ต๋๋ค.
๊ฐ๋จํ ์์ ๋ฅผ ํตํด ์ค๋ช
ํด๋ณด๊ฒ ์ต๋๋ค. 1๋ถํฐ 5๊น์ง์ ์ซ์๋ฅผ ํค๋ก ํ๊ณ ๊ฐ ์ซ์์ ์ ๊ณฑ์ ๊ฐ์ผ๋ก ํ๋ ๋์
๋๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ:
squares_dict = {x: x**2 for x in range(1, 6)} print(squares_dict) # ์ถ๋ ฅ: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
๋ ๋ค๋ฅธ ์๋ก, ๋ฌธ์์ด ๋ฆฌ์คํธ์์ ๊ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ํค๋ก ํ๊ณ ํด๋น ๋ฌธ์์ด์ ๊ฐ์ผ๋ก ํ๋ ๋์
๋๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ:
words = ["apple", "banana", "kiwi", "orange", "grape"] length_dict = {word: len(word) for word in words} print(length_dict) # ์ถ๋ ฅ: {'apple': 5, 'banana': 6, 'kiwi': 4, 'orange': 6, 'grape': 5}
๋์ ๋๋ฆฌ์์ '์ ํ์'์ ํค๋ก ๊ฐ๋ ๋ฐ์ดํฐ๋ง ์ ์ธํ๋ ๊ฒฝ์ฐ:
scores = {'์ฒ ์': 50, '์ํฌ': 80, '๊ธธ๋': 90, '์ํฌ': 60, '์ ํ์': 100} scores = { name: score for name, score in scores.items() if name != '์ ํ์'} print(scores) #์ถ๋ ฅ: {'๊ธธ๋': 90, '์ํฌ': 60, '์ํฌ': 80, '์ฒ ์': 50}
๋ฆฌ์คํธ, ๋์
๋๋ฆฌ ์ปดํ๋ฆฌํจ์
์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด์ฃผ๊ณ , ์ฌ๋ฌ ์ค์ ์ฝ๋๋ฅผ ํ ์ค๋ก ํํํ ์ ์์ด ๊ฐ๋
์ฑ์ ํฅ์์์ผ์ค๋๋ค.
'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ด์ฌ ํจํน(packing)๊ณผ ์ธํจํน(unpacking)์ ๋ชจ๋ ๊ฒ (1) | 2023.12.17 |
---|---|
ํ์ด์ฌ map, filter ํจ์(with. iterator) (0) | 2023.12.17 |
ํ์ด์ฌ ์คํ์ ๋ฉ์๋์ ๋ชจ๋ ๊ฒ(__init__, __str__, __len__ ๋ฑ) (0) | 2023.12.11 |
ํ์ด์ฌ ์์ธ์ฒ๋ฆฌ(Exception)์ ๋ชจ๋ ๊ฒ (1) | 2023.12.10 |
ํ์ด์ฌ ๋ชจ๋๊ณผ ํจํค์ง์ ๋ชจ๋ ๊ฒ (0) | 2023.12.09 |
๋๊ธ