Python Tips: Walrus Operator, List Comprehensions & More ๐Ÿ’ก๐Ÿ
AI Store์—์„œ AI์ฝ”๋”ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์•ฑ์„ ๋งŒ๋‚˜๋ณด์„ธ์š”!
์ง€๊ธˆ ๋ฐ”๋กœ ๋ฐฉ๋ฌธํ•˜๊ธฐ

10๊ฐœ์˜ ํŒŒ์ด์ฌ ํŒ: ๋‹น์‹ ์ด ์•Œ์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ๋“ค ๐Ÿ’ก๐Ÿ

์นดํ…Œ๊ณ ๋ฆฌ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ

์„œ๋ธŒ์นดํ…Œ๊ณ ๋ฆฌ

๊ฐœ๋ฐœ ํˆด

๋Œ€์ƒ์ž

  • ์ดˆ๋ณด์ž ๋ฐ ์ค‘๊ธ‰ Python ๊ฐœ๋ฐœ์ž
  • ๋‚œ์ด๋„: ์ค‘๊ฐ„ ์ˆ˜์ค€์˜ ์‹ค๋ฌด ํŒ, ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ์— ์ดˆ์ 

ํ•ต์‹ฌ ์š”์•ฝ

  • Walrus ์—ฐ์‚ฐ์ž :=๋กœ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฃจํ”„์—์„œ ๋ณ€์ˆ˜ ํ• ๋‹น์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ (Python 3.8+)
  • ๋ฆฌ์ŠคํŠธ/๋”•์…”๋„ˆ๋ฆฌ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•ด ์กฐ๊ฑด ์ ์šฉ๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์„ ํ•œ ์ค„๋กœ ์ฒ˜๋ฆฌ
  • ๋‹ค์ค‘ ํ• ๋‹น(a, b = b, a)๊ณผ * ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•œ ์œ ์—ฐํ•œ ๋ณ€์ˆ˜ ํŒจํ‚น/์–ธํŒจํ‚น

์„น์…˜๋ณ„ ์„ธ๋ถ€ ์š”์•ฝ

1. Walrus ์—ฐ์‚ฐ์ž `:=`

  • if (n := len("Hello")) > 3์ฒ˜๋Ÿผ ์กฐ๊ฑด๋ฌธ ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜ ํ• ๋‹น ๊ฐ€๋Šฅ
  • ๋ฃจํ”„์—์„œ while (n := len(input())) > 0์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ ๊ฐ€๋Šฅ
  • Python 3.8 ์ด์ƒ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

2. ์กฐ๊ฑด์‹์„ ํฌํ•จํ•œ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜

  • squares = [x*x for x in range(10) if x % 2 == 0]์ฒ˜๋Ÿผ ํ•„ํ„ฐ๋ง๊ณผ ๋ณ€ํ™˜ ๋™์‹œ ์ฒ˜๋ฆฌ
  • if ์กฐ๊ฑด์€ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋œ ์š”์†Œ๋งŒ ์œ ์ง€

3. ๋‹ค์ค‘ ํ• ๋‹น ๋ฐ ํŒจํ‚น/์–ธํŒจํ‚น

  • a, b, c = [1, 2, 3]์ฒ˜๋Ÿผ ๋ฆฌ์ŠคํŠธ/ํŠœํ”Œ์˜ ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ํ• ๋‹น
  • first, middle, last = [10, 20, 30, 40, 50]์ฒ˜๋Ÿผ ์ค‘๊ฐ„ ์š”์†Œ๋ฅผ middle๋กœ ์ถ”์ถœ

4. ๋ณ€์ˆ˜ ์Šค์™‘

  • a, b = b, a์ฒ˜๋Ÿผ temp ๋ณ€์ˆ˜ ์—†์ด ํ•œ ์ค„๋กœ ์Šค์™‘ ๊ฐ€๋Šฅ
  • Pythonic ์Šคํƒ€์ผ๋กœ ๊ถŒ์žฅ

5. ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ

  • " - ".join(words)์ฒ˜๋Ÿผ join() ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒฐํ•ฉ
  • ์ˆ˜๋™ ๋ฃจํ”„ ๋Œ€์‹  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅ

6. `enumerate()` ์‚ฌ์šฉ

  • for idx, name in enumerate(names)์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค์™€ ์š”์†Œ๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌ
  • range(len(...)) ๋Œ€์‹  ๋ช…ํ™•์„ฑ ํ–ฅ์ƒ

7. ํ•œ ์ค„ ์กฐ๊ฑด์‹ (`ternary operator`)

  • status = "adult" if age >= 18 else "minor"์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•œ ์กฐ๊ฑด์— ์ ํ•ฉ
  • ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ

8. ๋ฃจํ”„ `else` ๋ธ”๋ก

  • for n in range(5): ... else: print(...)์ฒ˜๋Ÿผ break ์—†์ด ์ข…๋ฃŒ ์‹œ ์‹คํ–‰
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋‚˜ ๊ฒ€์ฆ ๋กœ์ง์— ์œ ์šฉ

9. `dict.get()` ์‚ฌ์šฉ

  • data.get("age", "Not provided")์ฒ˜๋Ÿผ KeyError ๋ฐฉ์ง€
  • ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •์œผ๋กœ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ

10. ๋”•์…”๋„ˆ๋ฆฌ ์ปดํ”„๋ฆฌํ—จ์…˜

  • {x: x*x for x in range(5)}์ฒ˜๋Ÿผ ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ์„ ํ•œ ์ค„๋กœ ์ฒ˜๋ฆฌ
  • ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹

๊ฒฐ๋ก 

  • import this๋ฅผ ํ†ตํ•ด Zen of Python์˜ ์ฒ ํ•™์„ ํ™•์ธํ•ด๋ณด์„ธ์š”.
  • ์‹ค๋ฌด์— ์ ์šฉ ์‹œ Walrus ์—ฐ์‚ฐ์ž์™€ enumerate()๋ฅผ ์ฃผ๋กœ ํ™œ์šฉํ•ด ์ฝ”๋“œ ๊ฐ„๊ฒฐ์„ฑ ํ–ฅ์ƒ.
  • dict.get()๊ณผ * ํŒจํ‚น์€ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ ํ•„์ˆ˜์ ์ธ ํŒ.