๋ฐ์ํ
๐ List Comprehension
๐ ๋ฆฌ์คํธ ์์ฑํ๊ธฐ
* 1~10๊น์ง ์ ์๋ฅผ ์์๋๋ก ๊ฐ์ง๊ณ ์๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ์ฝ๋
numbers = []
for n in range(1, 10+1):
numbers.append(n)
* ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
(List Comprehension) : ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ์ปดํ๋ฆฌํจ์
[x for x in range(10)]
๐ for ๋ฌธ๊ณผ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ๋น๊ต
→ ๊ณตํต์ : ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋๊ดํธ([ ]) ๋ฅผ ํตํด ์์ฑ
→ ์ฐจ์ด์ : ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ๋ฆฌ์คํธ ๋ด๋ถ์ ์ฝ๋๋ฅผ ์์ฑ
* 1~10๊น์ง ์ซ์ ์ค ์ง์๋ง ์์ฐจ์ ์ผ๋ก ๋ค์ด์๋ ๋ฆฌ์คํธ ์์ฑํ๊ธฐ
* for๋ฌธ
even_numbers = []
for n in range(1, 10+1):
if n % 2 == 0:
even_numbers.append(n)
* ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
[ x for x in range(1, 10+1) if x % 2 == 0 ]
# [์คํ ๊ฒฐ๊ณผ] # [2, 4, 6, 8, 10]
* ์ค๋ณต ํํ ์์
* ์ ๋
์ผ๋ก ๋จน์ ๋ฉ๋ด ์๋ฐฅ, ์นํจ, ํผ์ ์ค ํ๋์ ํ์์ผ๋ก ๋จน์ ์ฌ๊ณผ, ์์ด์คํฌ๋ฆผ, ์ปคํผ ๋ฅผ
์ ํ ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์
[ (x, y) for x in ['์๋ฐฅ', '์นํจ', 'ํผ์'] for y in ['์ฌ๊ณผ', '์์ด์คํฌ๋ฆผ', '์ปคํผ'] ]
# [์คํ ๊ฒฐ๊ณผ]
# [('์๋ฐฅ', '์ฌ๊ณผ'),
# ('์๋ฐฅ', '์์ด์คํฌ๋ฆผ'),
# ('์๋ฐฅ', '์ปคํผ'),
# ('์นํจ', '์ฌ๊ณผ'),
# ('์นํจ', '์์ด์คํฌ๋ฆผ'),
# ('์นํจ', '์ปคํผ'),
# ('ํผ์', '์ฌ๊ณผ'),
# ('ํผ์', '์์ด์คํฌ๋ฆผ'),
# ('ํผ์', '์ปคํผ')]
* ์์ ์์์์ ๋ฐฐ๋ฌ์ ๋ํ ์ ํ์ง ์ถ๊ฐ
* for๋ฌธ
for x in ['์๋ฐฅ', '์นํจ', 'ํผ์']:
for y in ['์ฌ๊ณผ', '์์ด์คํฌ๋ฆผ', '์ปคํผ']:
for z in ['๋ฐฐ๋ฌ ์ํค๊ธฐ', '๊ฐ์ ๋จน๊ธฐ']:
print(x, z, y)
* ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
[ (x, y, z) for x in ['์๋ฐฅ', '์นํจ', 'ํผ์'] for y in ['์ฌ๊ณผ', '์์ด์คํฌ๋ฆผ', '์ปคํผ']
for z in ['๋ฐฐ๋ฌ ์ํค๊ธฐ', '๊ฐ์ ๋จน๊ธฐ']]
# [์คํ ๊ฒฐ๊ณผ]
# ['๋ฐฐ๋ฌ ์ํค๊ธฐ', '๊ฐ์ ๋จน๊ธฐ']]
# [('์๋ฐฅ', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์ฌ๊ณผ'),
# ('์๋ฐฅ', '๊ฐ์ ๋จน๊ธฐ', '์ฌ๊ณผ'),
# ('์๋ฐฅ', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์์ด์คํฌ๋ฆผ'),
# ('์๋ฐฅ', '๊ฐ์ ๋จน๊ธฐ', '์์ด์คํฌ๋ฆผ'),
# ('์๋ฐฅ', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์ปคํผ'),
# ('์๋ฐฅ', '๊ฐ์ ๋จน๊ธฐ', '์ปคํผ'),
# ('์นํจ', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์ฌ๊ณผ'),
# ('์นํจ', '๊ฐ์ ๋จน๊ธฐ', '์ฌ๊ณผ'),
# ('์นํจ', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์์ด์คํฌ๋ฆผ'),
# ('์นํจ', '๊ฐ์ ๋จน๊ธฐ', '์์ด์คํฌ๋ฆผ'),
# ('์นํจ', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์ปคํผ'),
# ('์นํจ', '๊ฐ์ ๋จน๊ธฐ', '์ปคํผ'),
# ('ํผ์', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์ฌ๊ณผ'),
# ('ํผ์', '๊ฐ์ ๋จน๊ธฐ', '์ฌ๊ณผ'),
# ('ํผ์', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์์ด์คํฌ๋ฆผ'),
# ('ํผ์', '๊ฐ์ ๋จน๊ธฐ', '์์ด์คํฌ๋ฆผ'),
# ('ํผ์', '๋ฐฐ๋ฌ ์ํค๊ธฐ', '์ปคํผ'),
# ('ํผ์', '๊ฐ์ ๋จน๊ธฐ', '์ปคํผ')]
* ์ฌ๋ฌ ์กฐ๊ฑด ์ค์ ํ๊ธฐ (if๋ฌธ ์ค๋ณต)
** ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
[ x for x in range(10) if x < 5 if x % 2 == 0 ]
# [์คํ ๊ฒฐ๊ณผ]
# [0, 2, 4]
๐ Dictionary Comprehension
๐ set comprehension ๋ง๋ค๊ธฐ
→ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ๋ฌธ๋ฒ์ ์ค๊ดํธ({ }) ๋ฅผ ์ด์ฉํด์ ์์ฑ
* ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
[ x+y for x in range(10) for y in range(10) ]
# [์คํ ๊ฒฐ๊ณผ]
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
# 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11,
# 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 8, 9, 10, 11,
# 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10,
# 11, 12, 13, 14, 15, 16, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
# 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
* set comprehension { x+y for x in range(10) for y in range(10) }
# [์คํ ๊ฒฐ๊ณผ]
# {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
๐ dictionary comprehension ๋ง๋ค๊ธฐ
→ key : value ์ ํํ๋ก set comprehension ๋ด์ฉ ์ฑ์ฐ๊ธฐ
* ํ์๋ค์ด ํ๋ฌ๊ฐ ๋ฌ๋ฆฐ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ dictionary ์์ฑ, ์ฒ์ ๊ฑฐ๋ฆฌ๋ 0์ผ๋ก ์ง์
* dictionary comprehension
students = ['์ฒ ์', '์ํฌ', '๊ธธ๋', '์ํฌ']
{ students: 0 for student in students }
# [์คํ ๊ฒฐ๊ณผ]
# {'์ฒ ์': 0, '์ํฌ': 0, '๊ธธ๋': 0, '์ํฌ': 0}
* ์ ํ์ ๊ฐ ํ์์ ์ฑ์ ์ ๊ฑฐ
scores = {'์ฒ ์': 50, '์ํฌ': 80, '๊ธธ๋': 90, '์ํฌ': 60, '์ ํ์': 100}
scores = { name: score for name, score in scores.items() if name != '์ ํ์' }
print(scores)
# [์คํ ๊ฒฐ๊ณผ]
# {'๊ธธ๋': 90, '์ํฌ': 60, '์ํฌ': 80, '์ฒ ์': 50}
* scores ์ ๋ฐ๋ฅธ ํต๊ณผ, ๋ถํต๊ณผ ์กฐ๊ฑด ์ง์
grades = { name: 'PASS' if value > 70 else 'No-Pass' for name, value in scores.items() }
print(grades)
# [์คํ ๊ฒฐ๊ณผ]
# {'๊ธธ๋': 'PASS', '์ํฌ': 'No-PASS', '์ํฌ': 'PASS', '์ฒ ์': 'No-PASS'}
๐ Tuple
๐ Tuple Comprehension
→ ์ปดํ๋ฆฌํจ์ ์ผ๋ก ๋ง๋ ์ ๋ณด๋ฅผ ์์ ํ ํ์๊ฐ ์๋ ์ ๋ณด์ผ ๋ ์์ฑ
* Tuple Comprehension ( x for x in range(10) )
# [์คํ ๊ฒฐ๊ณผ]
# <generator object <genexpr> at 0x104955f68>
๐ข generator : ๊ฐ์ ๋๊ฒจ์ฃผ๋ฉด ๊ฐ์ ์๋นํ ํ ๋ ์ด์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ์ง ์์
๋ฐ์ํ
'Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] matplotlib, seaborn ๋ง๋๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ / ๊พธ๋ฏธ๊ธฐ (0) | 2023.04.17 |
---|---|
[Python] docstring (๋ฌธ์ํ / ์ฌ์ฉ์ ์ ์ ํจ์ ) (0) | 2023.04.13 |
[Python] Pandas Data Analysis (0) | 2023.04.13 |
[Python] ๊ธฐ์ด๋ฌธ๋ฒ _ Sequence Type (List, Tuple, Dictionary) (3) | 2023.04.12 |
[Python] ๊ธฐ์ด๋ฌธ๋ฒ _ ๋ฌธ์์ด (String) (0) | 2023.04.12 |