Python

GreenBeanยท2021๋…„ 5์›” 16์ผ
0
post-thumbnail

Python

๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹

ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ๋Š” ์•ˆ์— for ๋ฐ˜๋ณต๋ฌธ๊ณผ if ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์‹, for ๋ฐ˜๋ณต๋ฌธ, if ์กฐ๊ฑด๋ฌธ ๋“ฑ์„ ์ง€์ •ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜(List Comprehension)์ด๋ผ ํ•จ

์ปดํ”„๋ฆฌํ—จ์…˜์€ ๋Šฅ๋ ฅ, ์ดํ•ด๋ ฅ, ์‹œํ—˜ ๋“ฑ์˜ ๋œป๋„ ์žˆ์ง€๋งŒ, ์–ด๋–ค ๊ฒƒ์„ ์žก์•„์„œ ๋‹ด์•„๋‘”๋‹ค๋Š” ๋œป์ด ์žˆ์Œ. ์ฆ‰, ์‹์œผ๋กœ ์ง€์ •ํ•ด์„œ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ฆฌ์ŠคํŠธ๋กœ ์žก์•„๋‘๋Š” ๊ฒƒ์ด ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜

[์‹ for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ]
list(์‹ for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ)
>>> a = [i for i in range(10)]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10))
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์‹, for, ๋ณ€์ˆ˜, in, ๋ฆฌ์ŠคํŠธ ์ˆœ์„œ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์—์„œ ์•ž์œผ๋กœ ์ฝ์œผ๋ฉด ๊ฐ„๋‹จํ•จ. range(10)์œผ๋กœ 0๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ƒ์„ฑํ•˜์—ฌ ๋ณ€์ˆ˜ i์— ์ˆซ์ž๋ฅผ ๊บผ๋‚ด๊ณ , ์ตœ์ข…์ ์œผ๋กœ i๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๋œป
>>> c = [i + 5 for i in range(10)]
>>> c
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> d = [i * 2 for i in range(10)]
>>> d
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  • [i for i in range(10)]๋Š” ๋ณ€์ˆ˜ i๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์œ„๊ณผ ๊ฐ™์ด ์‹ ๋ถ€๋ถ„์—์„œ i๋ฅผ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ์—ฐ์‚ฐํ•˜๋ฉด ๊ฐ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • [i + 5 for i in range(10)]๊ณผ ๊ฐ™์ด i์— 5๋ฅผ ๋”ํ•˜๋ฉด 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž์— 5๋ฅผ ๋”ํ•œ ๊ฐ’์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ [i * 2 for i in range(10)]๋Š” 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž์— 2๋ฅผ ๊ณฑํ•œ ๊ฐ’์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•จ

Tip! ๋Œ€๊ด„ํ˜ธ์™€ list() ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹

  • ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹์€ [์‹ for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ]์ฒ˜๋Ÿผ [ ](๋Œ€๊ด„ํ˜ธ)๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ , list(์‹ for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ)์ฒ˜๋Ÿผ list๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Œ.
  • ํ•˜์ง€๋งŒ ๋‘˜ ์ค‘์— ์„ฑ๋Šฅ์€ ๋Œ€๊ด„ํ˜ธ ๋ฐฉ์‹์ด ๋” ์ข‹์Œ
    • ํŠนํžˆ list ๋ฐฉ์‹์€ C ์–ธ์–ด ์Šคํƒ€์ผ์ด๋ผ ๋Œ€๊ด„ํ˜ธ ๋ฐฉ์‹์ด ํŒŒ์ด์ฌ ๋‹ค์šด ์ฝ”๋“œ.
  • ๋”ฐ๋ผ์„œ ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹์€ ๋Œ€๊ด„ํ˜ธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ. list๋Š” ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ •๋„๋งŒ ์•Œ์•„ ๋‘๋ฉด ๋จ

๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹ - if ์กฐ๊ฑด๋ฌธ

[์‹ for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ if ์กฐ๊ฑด์‹]
list(์‹ for ๋ณ€์ˆ˜ in ๋ฆฌ์ŠคํŠธ if ์กฐ๊ฑด์‹)
>>> a = [i for i in range(10) if i % 2 == 0]
>>> a
[0, 2, 4, 6, 8]
  • [i for i in range(10) if i % 2 == 0]๋Š” 0๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜์—ฌ 2์˜ ๋ฐฐ์ˆ˜์ธ ์ˆซ์ž(์ง์ˆ˜)๋กœ๋งŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•จ
  • ์ฆ‰, for ๋ฐ˜๋ณต๋ฌธ ๋’ค์— if ์กฐ๊ฑด๋ฌธ์„ ์ง€์ •ํ•˜๋ฉด ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•œ ๋’ค if ์กฐ๊ฑด๋ฌธ์—์„œ ํŠน์ • ์ˆซ์ž๋งŒ ๋ฝ‘์•„๋‚ด์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ
>>> b = [i + 5 for i in range(10) if i % 2 == 1]
>>> b
[6, 8, 10, 12, 14]
  • i๋ฅผ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ์—ฐ์‚ฐํ•ด์„œ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ

๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹ - if ์กฐ๊ฑด๋ฌธ else ํฌํ•จ

>>> [i if i % 2 == 0 else None for i in range(5) ]
[0, None, 2, None, 4]
  • ์œ„์˜ ์˜ˆ์ œ๋Š” [0,1,2,3,4] ์ค‘ ์ง์ˆ˜๋Š” ๋ชจ๋‘ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ์‹œํ‚ค๊ณ  ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ์—๋Š” None์„ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ
  • else๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” if-else๋ฌธ์ด i์™€ for ์‚ฌ์ด์— ์œ„์น˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜!

for ๋ฐ˜๋ณต๋ฌธ๊ณผ if ์กฐ๊ฑด๋ฌธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•  ๋•Œ

[์‹ for ๋ณ€์ˆ˜1 in ๋ฆฌ์ŠคํŠธ1 if ์กฐ๊ฑด์‹1     for ๋ณ€์ˆ˜2 in ๋ฆฌ์ŠคํŠธ2 if ์กฐ๊ฑด์‹2     ...     for ๋ณ€์ˆ˜n in ๋ฆฌ์ŠคํŠธn if ์กฐ๊ฑด์‹n]
 
list(์‹ for ๋ณ€์ˆ˜1 in ๋ฆฌ์ŠคํŠธ1 if ์กฐ๊ฑด์‹1         for ๋ณ€์ˆ˜2 in ๋ฆฌ์ŠคํŠธ2 if ์กฐ๊ฑด์‹2         ...         for ๋ณ€์ˆ˜n in ๋ฆฌ์ŠคํŠธn if ์กฐ๊ฑด์‹n)
>>> a = [i * j for j in range(2, 10) for i in range(1, 10)]
>>> a
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]
  • ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„์‹์— for๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ๋Š” ๋’ค์—์„œ๋ถ€ํ„ฐ ์•ž์œผ๋กœ ์ˆœ์ฐจ์  ์ฒ˜๋ฆฌ
  • ์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„๋กœ ์ž…๋ ฅํ–ˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž…๋ ฅํ•ด๋„ ๋จ
  • ์ด๋•Œ ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ํ•ด๋„ ๋˜๊ณ  ํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Œ
a = [i * j for j in range(2, 10)
           for i in range(1, 10)]
profile
๐ŸŒฑ Backend-Dev | hwaya2828@gmail.com

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