[Python] List Comprension

Laskaยท2025๋…„ 3์›” 14์ผ
post-thumbnail

๐ŸŒผ ํŒŒ์ด์ฌ์˜ ๊ฝƒ, ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜(List Comprehension) ๐ŸŒผ


๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์ด๋ž€?

๐Ÿ’ก ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. ๋Œ€๊ด„ํ˜ธ([]) ์•ˆ์— for๋ฌธ๊ณผ if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ์—ฌ๋Ÿฌ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„๋กœ ์ค„์—ฌ์ฃผ๋ฉฐ, ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์คŒ!


๐Ÿค” ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ vs ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ



1๏ธโƒฃ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , 0~4๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ:

li = []
for i in range(5):
    li.append(i)

# ์ถœ๋ ฅ: [0, 1, 2, 3, 4]



2๏ธโƒฃ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ:

li = [i for i in range(5)]

# ์ถœ๋ ฅ: [0, 1, 2, 3, 4]

ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ๊ฑธ ๋ณผ์ˆ˜์žˆ๋‹ค.





[i * 2 for i in range(5)]
# ์ถœ๋ ฅ: [0, 2, 4, 6, 8]

์‘์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

import sys
a = [sys.stdin.readline().strip() for _ in range(10)]

10๊ฐœ์˜ ์—ฌ๋Ÿฌ ์ค„ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ





๐Ÿค” ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์—์„œ ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ


๐Ÿ’ก ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์—์„œ๋Š” for๋ฌธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์กฐ๊ฑด๋ฌธ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉ์˜ˆ์‹œ


1๏ธโƒฃ ์ง์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ์ €์žฅํ•  ๊ฒฝ์šฐ :
[i for i in range(5) if i % 2 == 0]
# ์ถœ๋ ฅ: [0, 2, 4]

2๏ธโƒฃ ์—ฌ๋Ÿฌ ๊ฐœ์˜ `if` ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:
[i for i in range(5) if i % 2 == 0 if i % 4 == 0]
# ์ถœ๋ ฅ: [0, 4]




if-else ๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ’ก if-else ๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์™ผ์ชฝ์— ๋ฐฐ์น˜ํ•ด์•ผํ•จ!!

[i if i % 2 == 0 else 'odd' for i in range(5)]
# ์ถœ๋ ฅ: [0, 'odd', 2, 'odd', 4]



๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์˜ ์žฅ์ โœ…


1๏ธโƒฃ ์†๋„ ํ–ฅ์ƒ: ์ผ๋ฐ˜์ ์ธ for ๋ฃจํ”„๋ณด๋‹ค ๋น ๋ฆ„ (ํŒŒ์ด์ฌ ๋‚ด๋ถ€ ์ตœ์ ํ™” ๋•๋ถ„)
2๏ธโƒฃ ์ฝ”๋“œ ๊ฐ„๊ฒฐํ™”: ํ•œ ์ค„๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ ๊ฐ€๋Šฅ
3๏ธโƒฃ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ: map()์ด๋‚˜ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ‘œํ˜„์‹์„ ํ™œ์šฉํ•˜๋ฉด ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ







๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์˜ ๋‹จ์  โŒ



1๏ธโƒฃ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ฆ๊ฐ€
- ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋ฏ€๋กœ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Œ.
- ํ•ด๊ฒฐ์ฑ…: ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Œ.

    squares = (x**2 for x in range(10**6))  # ๋ฆฌ์ŠคํŠธ ๋Œ€์‹  ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์‚ฌ์šฉ

2๏ธโƒฃ **๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰** - ์กฐ๊ฑด๋ฌธ์ด ๋งŽ๊ฑฐ๋‚˜ ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์œผ๋ฉด ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ. - ํ•ด๊ฒฐ์ฑ…: `map()`๊ณผ `filter()` ๋˜๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ™œ์šฉ.
    squares = (x**2 for x in range(10**6) if x % 2 == 0)

3๏ธโƒฃ **๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ** - ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ `for` ๋ฃจํ”„๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ. - ์ค‘์ฒฉ๋œ ๊ฒฝ์šฐ ํŠนํžˆ ์ฃผ์˜ํ•ด์•ผ ํ•จ:
    matrix = [[x * y for x in range(5)] for y in range(5)]  # 5x5 ํ–‰๋ ฌ ์ƒ์„ฑ
โ†’ ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” **์ผ๋ฐ˜์ ์ธ `for` ๋ฃจํ”„๊ฐ€ ๋” ์ฝ๊ธฐ ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ์Œ**







๐Ÿ”ฅ ์ •๋ฆฌ

โœ… ์ž‘์€ ๋ฆฌ์ŠคํŠธ โ†’ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์ด ์œ ๋ฆฌํ•จ

โœ… ํฐ ๋ฆฌ์ŠคํŠธ โ†’ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ‘œํ˜„์‹(()) ๋˜๋Š” map(), filter() ๊ณ ๋ ค

โœ… ๋ณต์žกํ•œ ์กฐ๊ฑด์ด๋‚˜ ์ค‘์ฒฉ ์—ฐ์‚ฐ โ†’ for ๋ฃจํ”„๊ฐ€ ๋” ๊ฐ€๋…์„ฑ์ด ์ข‹์„ ์ˆ˜๋„ ์žˆ์Œ


๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ

profile
๋˜‘๋˜‘ํ•ด์ง€๊ณ  ์‹ถ์–ด์š”

0๊ฐœ์˜ ๋Œ“๊ธ€