๐Ÿ“š ์Šคํ„ฐ๋””/ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” ๊ฐ•์˜์ž๋ฃŒ

[4์ฐจ์‹œ/์กฐ์—ฐ์šฐ] ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” - ์ž๋ฃŒ๊ตฌ์กฐ / ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€

์กฐ์—ฐ์šฐ ๋‹˜์˜ ๋ธ”๋กœ๊ทธ 2025. 5. 16. 05:51

CHAPTER07_์ž๋ฃŒ๊ตฌ์กฐ.pdf
12.04MB
CHAPTER011_๋ชจ๋“ˆ๊ณผ_ํŒจํ‚ค์ง€.pdf
11.31MB
4์ฐจ์‹œ_์ž๋ฃŒ๊ตฌ์กฐ__๋ชจ๋“ˆ๊ณผ_ํŒจํ‚ค์ง€_๊ณผ์ œ.pdf
0.22MB

 

CHAPTER07_์ž๋ฃŒ๊ตฌ์กฐ

01_์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ดํ•ด

์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ฐœ๋…


  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ๋•Œ๊ฐ€ ์กด์žฌ
  • ์ž๋ฃŒ๊ตฌ์กฐ→ ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์„ ๊ณ ๋ คํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์‚ฌ๋ก€
    • ์€ํ–‰์˜ ๋ฒˆํ˜ธํ‘œ, ํƒ๋ฐฐ ์ˆ˜ํ™”๋ฌผ
    • ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ - ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๋‚˜๋‹ค ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ

⇒ ์ž๋ฃŒ๊ตฌ์กฐ: ํŠน์ง•์ด ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํšจ์œจ์ ์œผ๋กœ ์ €์žฅ ๋ฐ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹

ํŒŒ์ด์ฌ์—์„œ์˜ ์ž๋ฃŒ๊ตฌ์กฐ


  • ๋ฆฌ์ŠคํŠธ→ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ธฐ๋ณธ ์ €์žฅ ๋ฐฉ์‹
  • ํŒŒ์ด์ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

02_์Šคํƒ๊ณผ ํ

์Šคํƒ(stack)


: ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ

  • ‘Last In First Out’

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๊ฐํ˜•์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ์˜๋ฏธ
  • 4, 10๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ํ˜•ํƒœ
  • ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
    • ํ‘ธ์‹œ(push): ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ
    • ํŒ(pop): ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ค„ํ•˜๋Š” ๊ฒƒ
  • ์‚ฌ๋ก€
    • ํƒ๋ฐฐ ์ˆ˜ํ™”๋ฌผ ์ €์žฅ ๋ฐฉ์‹
      • ์ˆ˜ํ™”๋ฌผ์„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ณผ ๋•Œ, ๋จผ์ € ๋“ค์–ด๊ฐ„ ์ˆ˜ํ™”๋ฌผ๋ณด๋‹ค ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ์ˆ˜ํ™”๋ฌผ์ด ๋จผ์ € ๋‚˜์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์Šคํƒ ๊ตฌํ˜„(๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ)
    • ๋ฆฌ์ŠคํŠธ๋ผ๋Š” ์ €์žฅ ๊ณต๊ฐ„ ์ƒ์„ฑ → append()ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ(push) → pop()ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ ์ถ”์ถœ(pop)
»> a = [1, 2, 3, 4, 5]  # ๋ณ€์ˆ˜ a์— [1, 2, 3, 4, 5] ํ• ๋‹น
»> a.append(10)  # ๋ณ€์ˆ˜ a์— 10 ์ถ”๊ฐ€
»> a
[1, 2, 3, 4, 5, 10]  #  ๋ณ€์ˆ˜ a์— [1, 2, 3, 4, 5, 10] ํ• ๋‹น
»> a.append(20)
»> a
[1, 2, 3, 4, 5, 10, 20]
»> a.pop()
20  # ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฐ’ ์ถ”์ถœ, ๋™์‹œ์— ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ
»> a.pop()
10  # -> ๋ณ€์ˆ˜ a์˜ ๊ฐ’์€ [1, 2, 3, 4, 5]
  • ์Šคํƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ
    • ์ด์ง„์ˆ˜ ๋ณ€ํ™˜๊ธฐ
    • → 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์Šคํƒ์— ํ‘ธ์‹œ → ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ค์–ด์˜จ ๊ฐ’๋ถ€ํ„ฐ ํŒ์œผ๋กœ ์ถ”์ถœํ•˜๊ณ  ์ถœ๋ ฅ
    • ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ถ”์ถœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
1 word = input("Input a word: ")  # ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ ๋ณ€์ˆ˜ word์— ์ €์žฅ
2 world_list =list(word)  # ๊ทธ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ๋ณ€ํ™˜
3 print(world_list)
4
5 result = [ ]
6 for _ in range(len(world_list))๏ผš
7     result.append(world_list.pop())
8
9 print(result)  # ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์˜ ์—ญ์ˆœ๊ฐ’ ์ถœ๋ ฅ
10 print(word[๏ผš๏ผš-l])

  • ‘ _ ‘๊ธฐํ˜ธ
  • ์ผ๋ฐ˜์ ์œผ๋กœ for๋ฌธ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ
  • ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์€ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ

⇒ 6ํ–‰์˜ range(len(world_list))์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์„ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ _๋กœ ํ• ๋‹น ๋ฐ›์€ ๊ฒƒ

ํ(queue)


: ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ‘Fist in First Out’์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ์Šคํƒ์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…
  • ํ์˜ ์ผ๋ฐ˜์ ์ธ ์ €์žฅ ๋ฐฉ์‹

  • ์‚ฌ๋ก€
    • ์€ํ–‰์—์„œ ๋Œ€๊ธฐ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฝ‘์„ ๋•Œ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
      • ๋จผ์ € ์˜จ ์‚ฌ๋žŒ์ด ์•ž์˜ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฝ‘๊ณ , ๋ฒˆํ˜ธ๊ฐ€ ๋น ๋ฅธ ์‚ฌ๋žŒ์ด ๋จผ์ € ์„œ๋น„์Šค๋ฅผ ๋ฐ›๋Š” ๊ตฌ์กฐ
  • ๋ฉ”๋ชจ๋ฆฌ ๊ฐœ๋…
    • ์Šคํƒ๋ณด๋‹ค ๊ตฌํ˜„์ด ์กฐ๊ธˆ ๋” ๋ณต์žกํ•จ
    • ์Šคํƒ→ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ์ง€์ ์ด ๊ณ ์ •๋ผ ์žˆ์Œ
    • ํ→ ์ฒ˜์Œ์— ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๊ฐ’์ด ์‚ฌ์šฉ๋จ์— ๋”ฐ๋ผ ๊ณ„์† ๋ฐ”๋€œ
  • ํ ๊ตฌํ˜„
»> a = [1, 2, 3, 4, 5]
»> a.append(10) # a = [1, 2, 3, 4, 5, 10]
»> a.append(20) # a = [1, 2, 3, 4, 5, 10, 20]
»> a.pop(0)
1
»> a.pop(0)
2
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํƒ์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผ
  • pop(0) ์‚ฌ์šฉ→ pop() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ 0๋ฒˆ์งธ์ธ ๊ฐ’์„ ์“ด๋‹ค๋Š” ์˜๋ฏธ
  • ⇒ pop()ํ•จ์ˆ˜→ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์˜๋ฏธ / pop(0)→ ๋งจ ์ฒ˜์Œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์˜๋ฏธ

03_ํŠœํ”Œ๊ณผ ์„ธํŠธ

ํŠœํ”Œ


: ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ฐœ๋…์ด์ง€๋งŒ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ŠคํŠธ

  • ์„ ์–ธ๊ณผ ์‚ฌ์šฉ์ด ๋ฆฌ์ŠคํŠธ์™€ ์•ฝ๊ฐ„ ๋‹ค๋ฆ„
»> t = (1, 2, 3)  # ํŠœํ”Œ์„ ์„ ์–ธํ•˜๋Š” ๋ช…๋ น
»> print (t + t , t * 2)
(1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3)
»> len(t)
3
  • ํŠœํ”Œ→ ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ t = (1, 2, 3)๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์„ ์–ธ
  • ๋ฆฌ์ŠคํŠธ์™€ ๊ณตํ†ต์ 
    • ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ, ์ธ๋ฑ์‹ฑ, ์Šฌ๋ผ์ด์‹ฑ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ
    • ๋ฆฌ์ŠคํŠธํ˜• ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(ํŠœํ”Œ ๊ฐ„์˜ ๋ง์…ˆ, ๊ณฑ์…ˆ, len() ํ•จ์ˆ˜)
  • ๋ฆฌ์ŠคํŠธ์™€ ์ฐจ์ด์ 
    • ๋ฆฌ์ŠคํŠธ→ ๋Œ€๊ด„ํ˜ธ [ ]๋ฅผ ์ด์šฉ
    • **** ํŠœํ”Œ์˜ ๊ฐ’์€ ๋งˆ์Œ๋Œ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ ****
  • ํŠœํ”Œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
»>t[l] =5
Traceback (most recent call last)๏ผš
    File "<stdin>", line 1, in <module>
TypeError๏ผš 'tuple' object does not support item assignment 

⇒ ‘ํŠœํ”Œ ์˜ค๋ธŒ์ ํŠธ(‘tuple’ object)์—๋Š” ์ƒˆ๋กœ์šด ์•„์ดํ…œ(item)์˜ ํ• ๋‹น์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.’

  • ๊ฐ’์ด ํ•˜๋‚˜๋ฐ–์— ์—†์„ ๋•Œ ํŠœํ”Œ์˜ ์„ ์–ธ
    • ๋ฐ˜๋“œ์‹œ ์ฝค๋งˆ(,)๋ฅผ ๋ถ™์—ฌ t ๊ฐ€ ํŠœํ”Œ์ž„์„ ์„ ์–ธํ•ด์•ผ ํ•จ
      • ex) t = (1, )
    • If, t = (1)๋กœ ์„ ์–ธ → t = 1๋กœ ์ดํ•ดํ•˜๊ฒŒ ๋จ
      • → t = (5 + 2)* 2์™€ ๊ฐ™์ด ์—ฐ์‚ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ด„ํ˜ธ๋กœ ์ดํ•ดํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
    • ์ž์‹ ์ด ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋งŒ ๋งŒ๋“ค๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ทธ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒ
    • ์ด๋•Œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํƒ€์ž…์„ ํŠœํ”Œ๋กœ ์„ ์–ธ→ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งˆ์Œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๊ฒŒ ๋จ.
  • ๋ฐ”๋€Œ๋ฉด ์•ˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ ⇒ ํ•™๋ฒˆ์ด๋‚˜ ์ด๋ฆ„, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ ๋˜๋Š” ์ •๋ณด ๋“ฑ

⇒ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ด๋Ÿฌํ•œ ์ดํ•ด ์—†์ด ๋งˆ์Œ๋Œ€๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํŠœํ”Œ์€ ์ด๋ฅผ ๋ฐฉ์ง€ํ•ด์ฃผ๋Š” ์—ญํ• 

์„ธํŠธ


: ๊ฐ’์„ ์ˆœ์„œ ์—†์ด ์ €์žฅํ•˜๋˜ ์ค‘๋ณต์„ ๋ถˆํ—ˆํ•˜๋Š” ์ž๋ฃŒํ˜•

  • ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ๊ณผ ๊ฐœ๋…์ ์œผ๋กœ ์•„์ฃผ ๋น„์Šทํ•จ
  • ์ค‘๋ณต์„ ๋ถˆํ—ˆํ•˜๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งค์šฐ ์œ ์šฉํ•จ
    • ex) ๋ฌธ์„œ ํ•˜๋‚˜์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋‹จ์–ด ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์…€ ๋•Œ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ์ถ”์ถœํ•œ ํ›„ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋‹จ์–ด ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•… ๊ฐ€๋Šฅ
    • ํŒŒ์ด์ฌ์—์„œ๋Š” ์„ธํŠธ ์„ ์–ธ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
»> s = set([1, 2, 3, 1, 2, 3])   # set() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1, 2, 3์„ ์„ธํŠธ ๊ฐ์ฒด๋กœ ์ƒ์„ฑ
»> s 
{1, 2, 3}
  • set() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ→ ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์ด ์„ธํŠธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋จ
  • [1, 2, 3, 1, 2, 3]์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธํ˜•์˜ ๊ฐ’์„ ์„ธํŠธ๋กœ ๋ณ€ํ™˜→ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ›„ {1, 2, 3}์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ถœ๋ ฅ
  • ํŠœํ”Œ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์‚ญ์ œ๋‚˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅ→ ์ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ์ง€์›
»> S
{1, 2, 3}
»> s.add(l)  
»> s
{1, 2, 3}  # 1 ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์ด์ง€๋งŒ ์ค‘๋ณต ๋ถˆํ—ˆ๋กœ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ
»> s.remove(l)  
»> s
{2, 3}  # 1 ์‚ญ์ œ
»> s.update([1, 4, 5, 6, 7]) 
»> s
{1, 2, 3, 4, 5, 6, 7}  # [1, 4, 5, 6, 7] ์ถ”๊ฐ€
»> s.discard(3)  
»> s
{1, 2, 4, 5, 6, 7}  #3 ์‚ญ์ œ
»> s.clear() 
»> s
set()  # ๋ชจ๋“  ์›์†Œ ์‚ญ์ œ
  • ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜
    • add() : ์›์†Œ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
    • remove() & discard() : ์›์†Œ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜
    • update() : ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
    • clear() : ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ์ง€์šฐ๋Š” ํ•จ์ˆ˜
  • ๊ฐ’์€ ๋ชจ๋‘ ์ˆœ์„œ ์—†์ด ์ €์žฅ๋˜๋Š” ๋™์‹œ์— ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ €์žฅ๋จ
  • ํŒŒ์ด์ฌ์˜ ์„ธํŠธ๋Š” ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์–‘ํ•œ ์ง‘ํ•ฉ ์—ฐ์‚ฐ ์ œ๊ณต
    • ๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ

»> s1 =set([1, 2, 3, 4, 5]) 
»> s2 =set([3, 4, 5, 6 ,7]) 
»>
»> s1.union(s2)   # s1๊ณผ s2์˜ ํ•ฉ์ง‘ํ•ฉ
{1, 2, 3, 4, 5, 6, 7}
»> s1 | s2  # set([l, 2, 3, 4, 5, 6, 7])
{1, 2, 3, 4, 5, 6, 7}
»> s1.intersection(s2)   # s1 s2์˜ ๊ต์ง‘ํ•ฉ
{3, 4, 5}
»> s1 & s2  # set([3, 4, 5])
{3, 4, 5}
»> s1.difference(s2)   # s1๊ณผ s2์˜ ์ฐจ์ง‘ํ•ฉ
{1, 2}
»> s1 - s2  # set([l, 2])
{1, 2}
  •  
  • ํ•ฉ์ง‘ํ•ฉ : ๋‘ ์ง‘ํ•ฉ์˜ ์ค‘๋ณต๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ํ•ฉ์น˜๋Š” ์—ฐ์‚ฐ
  • ๊ต์ง‘ํ•ฉ : ๋‘ ์ง‘ํ•ฉ ์–‘์ชฝ์— ๋ชจ๋‘ ํฌํ•จ๋œ ๊ฐ’๋งŒ ์ถ”์ถœํ•˜๋Š” ์—ฐ์‚ฐ( if๋ฌธ์—์„œ ๋ฐฐ์› ๋˜ and ์กฐ๊ฑด์˜ ๊ฐœ๋…๊ณผ ๋น„์Šท)
  • ์ฐจ์ง‘ํ•ฉ : ์•ž์— ์žˆ๋Š” ์ง‘ํ•ฉ s1์˜ ์›์†Œ ์ค‘ s2์— ํฌํ•จ๋œ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์—ฐ์‚ฐ

04_๋”•์…”๋„ˆ๋ฆฌ

๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐœ๋…


  • ์˜์–ด์‚ฌ์ „์—์„œ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์˜์–ด ๋‹จ์–ด๋“ค์„ ์ €์žฅํ•ด ๋†“์€ ๋ฐฉ์‹๊ณผ ๋น„์Šท
    • ์˜์–ด์‚ฌ์ „์—์„œ๋Š” ๊ฐ ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒ‰์ธindex์„ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์ƒ‰์ธ์„ ํ†ตํ•ด ๊ทธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•จ
      • ์ƒ‰์ธ: ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์‰ฝ๋„๋ก ๊ตฌ๋ถ„ํ•ด ๋†“์€ ์œ ์ผํ•œ ์ •๋ณด๋กœ, ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹
  • ํŒŒ์ด์ฌ์˜ ๋”•์…”๋„ˆ๋ฆฌ ๊ตฌ์กฐ
    • ๋ฐ์ดํ„ฐ์˜ ์œ ์ผํ•œ ๊ตฌ๋ถ„์ž์ธ ํ‚คkey๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ’value ์ด๋ผ๋Š” ์ด๋ฆ„๊ณผ ์Œ์œผ๋กœ ์ €์žฅํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
    • ex) ๊ฐœ์ธ์˜ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋‚˜ ํ•™๊ต์˜ ํ•™๋ฒˆ, ์ œํ’ˆ ๋ฒˆํ˜ธ ๋“ฑ→ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํ‚ค

  • ํ•™๋ฒˆ→ ๋‚˜๋จธ์ง€ ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํ‚ค

ํŒŒ์ด์ฌ์—์„œ์˜ ๋”•์…”๋„ˆ๋ฆฌ


  • ๋”•์…”๋„ˆ๋ฆฌ ์„ ์–ธ
    • ์ค‘๊ด„ํ˜ธ{ }๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ๊ตฌ์„ฑ

  • ๊ฐ’์—๋Š” ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ
    • ๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์ด ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ํŠœํ”Œ ๋ฐ ์„ธํŠธ, ๋”•์…”๋„ˆ๋ฆฌ๊นŒ์ง€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ
 »> student_info = {20140012๏ผš’Sungchul’, 20140059:'Jiyong', 20140058๏ผš’Jaehong'}
  • student_info ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋จผ์ € ์„ ์–ธ→ ํ•ด๋‹น ๋ณ€์ˆ˜์—{ํ‚ค:๊ฐ’} ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ž…๋ ฅํ•จ
  • ํ•ด๋‹น ๋ณ€์ˆ˜์—์„œ ํŠน์ • ๊ฐ’ ํ˜ธ์ถœ
 »> student_info๏ผป20140012๏ผฝ
'Sungchul'
  • ํ•ด๋‹น ๊ฐ’์˜ ํ‚ค๋ฅผ ๋Œ€๊ด„ํ˜ธ [ ] ์•ˆ์— ๋„ฃ์–ด ํ˜ธ์ถœํ•จ
  • ํ‚ค๋Š” ๋ฌธ์ž์—ด ๋˜๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•จ(์—ฌ๊ธฐ์„œ๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ ์„ ์–ธํ–ˆ์œผ๋ฏ€๋กœ ์ •์ˆ˜ํ˜•์œผ๋กœ ํ˜ธ์ถœ)
  • ์žฌํ• ๋‹น & ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
»> student_info[20140012]= 'Sungchul'
»> student_info[20140012]
'Sungchul'
»> student_info[20140039]= 'Wonchul'
»> student_info
{20140012: ’Sungchul’, 20140059๏ผš 'Jiyong', 20140058: 'Jaehong', 20140039๏ผš 'Wonchul'}
  • ๋”•์…”๋„ˆ๋ฆฌ์—์„œ์˜ ์žฌํ• ๋‹น๋„ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Œ
  • ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹น
  • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๋„ ์ƒˆ๋กœ์šด ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๋จ
  • ํ• ๋‹น ์‹œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๊ฐ€ ๊ธฐ์กด์— ์žˆ๋˜ ํ‚ค๋ผ๋ฉด ํ•ด๋‹น ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๊ณ , ๊ธฐ์กด์— ์—†๋˜ ํ‚ค๋ผ๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€๋จ

๋”•์…”๋„ˆ๋ฆฌ ํ•จ์ˆ˜


  • ํŒŒ์ด์ฌ→ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•จ
  • ํŠนํžˆ for๋ฌธ์ด๋‚˜ if๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅ
  • ex) ๊ตญ๊ฐ€๋ช…๊ณผ ๊ตญ๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ฌถ์–ด ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ
»> country_code = {}  # ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ
»> country_code = {"America"๏ผš 1, "Korea"๏ผš 82, "China"๏ผš 86, "Japan"๏ผš 81}
»> country_code
{'America'๏ผš 1, 'Korea'๏ผš 82, 'China'๏ผš 86, 'Japan': 81}
  • ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€์ˆ˜ ์•ˆ์˜ ํ‚ค์™€ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
    • keys() ํ•จ์ˆ˜: ํ‚ค๋งŒ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
»> country_code.keys()  # ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋งŒ ์ถœ๋ ฅ
dict_keys(['America', 'Korea', 'China', 'Japan'])
  • values() ํ•จ์ˆ˜: ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
»> country_code["German"] = 49  # ๋”•์…”๋„ˆ๋ฆฌ ์ถ”๊ฐ€
»> country_code
{'America': 1, 'Korea': 82, 'China': 86, 'Japan': 81, 'German': 49}
»> country_code.values()  # ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’๋งŒ ์ถœ๋ ฅ
dict_values([l, 82, 86, 81, 49])
  • items() ํ•จ์ˆ˜: ํ‚ค-๊ฐ’ ์Œ์„ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜
»> country_code.items()  # ๋”•์…”๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
dict_items([('America1), (’Korea', 82), ('China', 86), (‘Japan’, 81), ('German', 49)])
  • for๋ฌธ๊ณผ ์‚ฌ์šฉ
    • ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ for๋ฌธ๊ณผ ํ•จ๊ป˜ ๋งŽ์ด ์‚ฌ์šฉ
    • ํ‚ค-๊ฐ’ ์Œ์„ ํ™”๋ฉด์— ์ถœ๋ ฅ
»> for k, v in country_code.items()๏ผš
... print("Key:", k)
... print("Value๏ผš", v)
...
Key: America
Value: 1
Key๏ผš Korea
Value๏ผš 82
Key๏ผš China
Value: 86
Key๏ผš Japan
Value๏ผš 81
Key๏ผš Gernman
Value๏ผš 49
  • if๋ฌธ ์‚ฌ์šฉ
»> "Korea" in country_code.keys()   # ํ‚ค์— "Korea"๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
True
»> 82 in country_code.values()  # ๊ฐ’์— 82๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
True
  • ํŠน์ • ํ‚ค๋‚˜ ๊ฐ’์ด ํ•ด๋‹น ๋ณ€์ˆ˜์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

05_collections ๋ชจ๋“ˆ

: ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ์„ ํ™•์žฅํ•˜์—ฌ ์ œ์ž‘๋œ ํŒŒ์ด์ฌ์˜ ๋‚ด์žฅ ์ž๋ฃŒ๊ตฌ์กฐ ๋ชจ๋“ˆ

  • ๊ธฐ์กด์— ๋ฐฐ์› ๋˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ณด๋‹ค ํšจ์œจ์ ์ด๊ณ  ํŽธ๋ฆฌ
  • deque, OrderedDict, defaultdict, Counter, namedtuple ๋“ฑ์„ ์ œ๊ณต
from collections import deque 
from collections import OrderedDict
from collections import defaultdict 
from collections import Counter
from collections import namedtuple

deque ๋ชจ๋“ˆ


: ์Šคํƒ๊ณผ ํ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๋ชจ๋“ˆ

  • ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•จ
  • ์Šคํƒ ์‚ฌ์šฉ
 »> from collections import deque
 »>
 »> deque_list = deque()  # ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
 »> for i in range(5):
 ... deque_list.append(i)
 ...
 »> print(deque_list)
 deque([0, 1, 2, 3, 4])
  • append() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ→ ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋Š˜๋ฆฌ๋ฉด์„œ ์Œ“์ด๊ธฐ ์‹œ์ž‘ํ•จ
»> deque_list.pop()
4
»> deque_list.pop()
3
»> deque_list.pop()
2
»> deque_list 
deque([0, 1])
  • deque_list.pop()์„ ์ˆ˜ํ–‰→ ์˜ค๋ฅธ์ชฝ ์š”์†Œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ถ”์ถœ๋จ
  • → ์Šคํƒ์ฒ˜๋Ÿผ ๋‚˜์ค‘์— ๋„ฃ์€ ๊ฐ’๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ถ”์ถœ๋˜๋Š” ๊ฒƒ
  • ํ ์‚ฌ์šฉ
»> from coUections import deque
»>
»> deque_list = deque()
»> for i in range(5)๏ผš
... 
deque_list.appendleft(i)
»> print(deque_list)
deque([4, 3, 2, 1, 0])
  • appendleft() ํ•จ์ˆ˜→ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ž…๋ ฅํ•˜๋„๋ก ํ•˜์—ฌ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฐ’๋ถ€ํ„ฐ ์ถœ๋ ฅ๋˜๋„๋ก ํ•จ
  • pop(0)์€ deque์—์„œ ์ž‘๋™ X
  • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์™€ ๋น„๊ต์‹œ ์žฅ์ 
    1. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํŠน์„ฑ์„ ์ง€์›ํ•จ
      • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ: ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์š”์†Œ์˜ ๊ฐ’์„ ํ•œ ์ชฝ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ํ›„, ์š”์†Œ์˜ ๋‹ค์Œ ๊ฐ’์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ•

  • [๊ทธ๋ฆผ 7-6]์ฒ˜๋Ÿผ ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ˜•์œผ๋กœ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•จ
    • ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ์ฒซ ๋ฒˆ์งธ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ์‹œ์ผœ ํ•ด๋‹น ๊ฐ’์„ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ์‹œํ‚ด
      • rotate() ํ•จ์ˆ˜: ๊ธฐ์กด deque์— ์ €์žฅ๋œ ์š”์†Œ๋“ค ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ธฐ๋ฒ•
      • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ→ ์–‘์ชฝ ๋์˜ ์š”์†Œ๋“ค์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์›ํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง
      • ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ์ด์šฉ→ ๊ฐ ์š”์†Œ์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ํ•˜๋‚˜์”ฉ ์˜ฎ๊ธด๋‹ค๋ฉด ์‹ค์ œ๋กœ ์š”์†Œ๋ฅผ ์˜ฎ๊ธฐ์ง€ ์•Š๋”๋ผ๋„ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ
    • ⇒ ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜→ rotate() ํ•จ์ˆ˜
»> from collections import deque 
»>
»> deque_list = deque()
»> for i in range(5)๏ผš
... deque_list.appendleft(i)
...
»> print(deque_list) 
deque([0, 1, 2, 3, 4])
»> deque_list.rotate(2)  # rotate(2)ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰
»> print(deqiie_list) 
deque([3, 4, 0, 1, 2])  #  3๊ณผ 4๊ฐ€ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ์ด๋™
»> deque_list.rotate(2)  # rotate(2)ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰
»> print(deque_list) 
deque([1, 2, 3, 4, 0])  #  1๊ณผ 2๊ฐ€ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ์ด๋™
  • ๊ธฐ์กด ๋ฐ์ดํ„ฐ์— rotate(2)ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋ฉด 3๊ณผ 4์˜ ๊ฐ’์ด ๋‘ ์นธ์”ฉ ์ด๋™ํ•˜์—ฌ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ์˜ฎ๊ฒจ์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์‹œ rotated๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋ฉด 1๊ณผ 2๊ฐ€ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ์ด๋™
  • ์ด์™ธ์—๋„ deque๋ชจ๋“ˆ์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
    • reversed() ํ•จ์ˆ˜ ์‚ฌ์šฉ: ๊ธฐ์กด๊ณผ ๋ฐ˜๋Œ€๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ
»> print(deque(reversed(deque_list))) 
deque([0, 4, 3, 2, 1])
  • extend( ), extendleft() ํ•จ์ˆ˜ ์‚ฌ์šฉ: ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ†ต์งธ๋กœ ์˜ค๋ฅธ์ชฝ์ด๋‚˜ ์™ผ์ชฝ์œผ๋กœ ์ถ”๊ฐ€
 »> deque_list.extend([5, 6, 7])
 »> print(deque_list)
 deque([l, 2, 3, 4, 0, 5, 6, 7])
 »> deque_list.extendleft([5, 6, 7])
 »> print(deque_list)
 deque([7, 6, 5, 1, 2, 3, 4, 0, 5, 6, 7])
  1. ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์  ์‚ฌ์šฉ / ๋น ๋ฅธ ์†๋„๋ผ๋Š” ์ธก๋ฉด์—์„œ ์œ ์šฉ
  • ์•ž์—์„œ ์ œ์‹œํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ•จ์ˆ˜๋Š” ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์—์„œ๋„ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ
  • ๊ทธ๋Ÿฌ๋‚˜ deque์˜ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ๋ฐฉ์‹ ์‚ฌ์šฉ→ ์‚ฌ์šฉ์ž๋Š” ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ
  • ๋Œ€์šฉ๋Ÿ‰์˜ ํ๋‚˜ ์Šคํƒ์„ ์ฒ˜๋ฆฌ์‹œ deque ์‚ฌ์šฉ์„ ๊ถŒ์žฅ

OrderedDict ๋ชจ๋“ˆ


: ์ˆœ์„œ๋ฅผ ๊ฐ€์ง„ ๋”•์…”๋„ˆ๋ฆฌ ๊ฐ์ฒด

  • ๋”•์…”๋„ˆ๋ฆฌ→ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด
  • ๋”•์…”๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋ฉด ํ‚ค๋Š” ์ €์žฅ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์ €์žฅ๋จ
    1 d = {}
    2 d['x'] = 100
    3 d['l'] = 500
    4 d['y'] = 200
    5 d['z']=300
    6
    7 for k, v in d.items()๏ผš
    8     print(k, v)
    โ€‹

  • x, l, y, z์˜ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค๋ฅผ ์ €์žฅํ–ˆ์ง€๋งŒ, ๊ฒฐ๊ณผ๋Š” ์ €์žฅํ•œ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ(์ปดํ“จํ„ฐ๋งˆ๋‹ค ๊ฒฐ๊ณผ ์ƒ์ด)
  • but, OrderedDict ๋ชจ๋“ˆ→ ํ‚ค์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ €์žฅํ•œ ํ‚ค์˜ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ๋จ
1 from collections import OrderedDict   # OrderedDict ๋ชจ๋“ˆ ์„ ์–ธ
2
3 d = OrderedDictO
4 d['x'] = 100
5 d['y'] = 200
6 d['z'] = 300
7 d['l'] = 500
8
9 for k, v in d.items()๏ผš
10    print(k, v)

  • ์–ด๋–ค ์ปดํ“จํ„ฐ๋“  ์ƒ๊ด€์—†์ด x, y, z, l์˜ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค-๊ฐ’์Œ์ด ์ถœ๋ ฅ๋จ
  • ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ ํ‚ค๋‚˜ ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
    • ex) ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ฅผ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ
  • ์–ด๋–ค ์ปดํ“จํ„ฐ๋“  ์ƒ๊ด€์—†์ด x, y, z, l์˜ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค-๊ฐ’์Œ์ด ์ถœ๋ ฅ๋จ
  • ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ ํ‚ค๋‚˜ ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
    • ex) ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ฅผ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ

  • ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’์ธ ๋ณ€์ˆ˜ d๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋งŒ๋“  ๋‹ค์Œ, sorted() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌ
    • sorted(d.items(), key=sort_by_key)์˜ ์ฝ”๋“œ๋งŒ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ์ •๋ ฌ๋˜์–ด ์ด์ฐจ์› ํ˜•ํƒœ๋กœ ๊ฐ’์ด ์ถœ๋ ฅ๋จ

  • ์ฆ‰, ๊ธฐ์กด์˜ ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ถ”์ถœํ•˜๊ณ , sorted() ํ•จ์ˆ˜๋กœ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ํ›„, ๋‹ค์‹œ OrderedDict ๋ชจ๋“ˆ๋กœ ๊ฐ์‹ธ์ฃผ๋Š”wrapping ๋ฐฉ์‹
  • → ๊ธฐ์กด์˜ ๋”•์…”๋„ˆ๋ฆฌ๋‚˜ ๋ฆฌ์ŠคํŠธ์˜ ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • if, ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค๋ฉด 1ํ–‰๊ณผ 2ํ–‰์„ ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ฐ”๊พธ๋ฉด ๋จ

  • ์ฐธ๊ณ ๋กœ t[0]๊ณผ t[1]์€ ์œ„ ๋ฆฌ์ŠคํŠธ ์•ˆ์˜ ํŠœํ”Œ ๊ฐ’ ์ค‘ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค(l, x, y, z)์™€ 1 ๋ฒˆ์งธ ์ธ๋ฑ์Šค(500, 100, 200, 300)๋ฅผ ์˜๋ฏธํ•จ

defaultdict ๋ชจ๋“ˆ


: ๋”•์…”๋„ˆ๋ฆฌ์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ‚ค์— ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

→ ์ƒˆ๋กœ์šด ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณ„๋‹ค๋ฅธ ์กฐ์น˜ ์—†์ด ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ

  • ์‹ค์ œ ๋”•์…”๋„ˆ๋ฆฌ์—์„œ๋Š” ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ํ‚ค์˜ ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ

→ ์ฝ”๋“œ์—์„œ first์˜ ํ‚ค๊ฐ’์„ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ์ฑ„ ๋ฐ”๋กœ ํ˜ธ์ถœํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ

  • defaultdict ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ
    1 from collections import defaultdict
    2
    3 d = defaultdict(lambda๏ผš 0) 
    4 print(d["first"])
    โ€‹
  • 3ํ–‰์˜ d = defaultdict(lambda๏ผš 0)

→ defaultdict ๋ชจ๋“ˆ ์„ ์–ธ ๋™์‹œ์— ์ดˆ๊นƒ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •

→ ‘return 0’์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋จ

→ ์–ด๋–ค ํ‚ค๊ฐ€ ๋“ค์–ด์˜ค๋”๋ผ๋„ ์ฒ˜์Œ ๊ฐ’์€ ์ „๋ถ€ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค๋Š” ๋œป

  • ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ดˆ๊นƒ๊ฐ’ ์„ค์ •
    1 from collections import defaultdict
    2
    3 s =๏ผป('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)๏ผฝ
    4 d = defaultdict(list)
    5 for k, v in s๏ผš
    6     d[k].append(v)
    7
    8 print(d.items())
    9 [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
    โ€‹
  • 3ํ–‰ - s ๋ณ€์ˆ˜์— ํŠœํ”Œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅ
  • 4ํ–‰ - ๋ณ€์ˆ˜ d๋ฅผ defaultdict ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ฉด์„œ ์ดˆ๊นƒ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ์„ ์–ธ
  • 5ํ–‰~ - for๋ฌธ์ด ์ž‘๋™ํ•˜๋ฉด์„œ ๋ณ€์ˆ˜ s์˜ ๊ฐ ์š”์†Œ์—์„œ ํ‚ค ๊ฐ’๊ณผ ์‹ค์ œ ๊ฐ’์„ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜ ์‹œ์— ์ถ”๊ฐ€
    • ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ณ€์ˆ˜ d๋Š” deafultdict ํƒ€์ž…์ด๋ฉด์„œ list๊ฐ€ ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํ‚ค ๊ฐ’์ด ์—†๋”๋ผ๋„ ๋ณ„๋„๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
    • → ์ผ๋ฐ˜์ ์ธ ‘dict’์— ๋น„ํ•ด ์ฝ”๋“œ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์–ด defaultdict ํƒ€์ž…์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ 

Counter ๋ชจ๋“ˆ


: ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์— ์ €์žฅ๋œ ์š”์†Œ ์ค‘์—์„œ ๊ฐ™์€ ๊ฐ’์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ทธ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•จ
»> from collections import Counter
»>
»> text = list("gallahad")  
»> text
['g' 'a', 'l', 'l', 'a', 'h', 'a', 'd']
»> c = Counter(text)
»> c
Counter({'a': 3, 'I'๏ผš 2, 'g'๏ผš 1, 'h': 1, 'd'๏ผš 1}) 
»> c["a"]
3
  • ๊ธฐ์กด ๋ฌธ์ž์—ด๊ฐ’์ธ ‘gallahad’๋ฅผ ๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, text ๋ณ€์ˆ˜์— ์ €์žฅ
  • (‘gallahad’ ์ž์ฒด๋„ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ๊ตณ์ด ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅ)
  • c๋ผ๋Š” Counter ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ text ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ์„ค์ •
  • → ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ์œ„ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๊ฐ ์•ŒํŒŒ๋ฒณ์ด ๋ช‡ ๊ฐœ์”ฉ ์žˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ํ™•์ธ ๊ฐ€๋Šฅ
  • c["a"]์ฒ˜๋Ÿผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ์˜ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•ด ํŠน์ • ํ…์ŠคํŠธ์˜ ๊ฐœ์ˆ˜๋„ ๋ฐ”๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
  • Counter๋ฅผ ์ด์šฉ→ ๊ฐ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜ ์„ธ๋Š” ์ž‘์—…์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ •๋ ฌ๊นŒ์ง€ ๋๋‚ธ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด์ „ Lab์—์„œ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์„ ๋‹จ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ
  • Counter๋Š” ๋‹จ์ˆœํžˆ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๋Š” ์—ญํ• ๋„ ํ•˜์ง€๋งŒ, ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋‚˜ ํ‚ค์›Œ๋“œ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
  1. ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ Counter ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
»> from collections import Counter
»>
»> c = Counter({'red': 4, 'blue'๏ผš 2}) 
»> print(c)
Counter({'red'๏ผš 4, 'blue'๏ผš 2}) 
»> print(list(c.elements())) 
['red', 'red', 'red', 'red', 'blue', 'blue']
  • {'red'๏ผš 4, 'blue'๏ผš 2}๋ผ๋Š” ์ดˆ๊นƒ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑ
  • elements() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฆฌ์ŠคํŠธํ˜•์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ
  1. ํ‚ค์›Œ๋“œ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
  2. → ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ํ‚ค key๋กœ, ์‹ค์ œ ๊ฐ’์„ ๊ฐ’value์œผ๋กœ ํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
»> from collections import Counter 
»>
»> c = Counter(cats = 4, dogs = 8)
»> print(c)
Counter({'dogs'๏ผš 8, 'cats'๏ผš 4}) 
»> print(list(c.elements())) 
['cats', 'cats', 'cats', 'cats', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs']
  • ๊ธฐ๋ณธ ์‚ฌ์น™์—ฐ์‚ฐ ์ง€์›(ํŒŒ์ด์ฌ์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ธ ๋ง์…ˆ. ๋บ„์…ˆ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ)
»> from collections import Counter 
»>
»> c = Counter(a = 4, b = 2, c = 0, d = -2)
»> d = Counter(a = 1, b = 2, c = 3, d = 4)
»> c.subtract(d)   # c - d
»> c
Counter({'a': 3, 'b'๏ผš 0, 'c'๏ผš -3, 'd'๏ผš -6})
  • 2๊ฐœ์˜ Counter c์™€ d๋ฅผ ์ƒ์„ฑํ•œ ํ›„ c.subtract(d)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ c์— ๋Œ€ํ•œ d์˜ ์ฐจ๋ฅผ ๊ตฌํ•œ ๊ฒฐ๊ณผ

→ c์— ์žˆ๋Š” ๊ฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ d์— ์žˆ๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๊ฐ์†Œํ•จ

  • ๋ง์…ˆ, AND, OR ์—ฐ์‚ฐ ๋ชจ๋‘๋ฅผ ์ง€์›
»> from collections import Counter
»>
»> c = Counter(a = 4, b = 2, c = 0, d = -2)
»> d = Counter(a = 1, b = 2, c = 3, d = 4)
»> print(c + d)
Counter({'a': 5, 'b': 4, 'c'๏ผš 3, 'd': 2}) 
»> print(c & d)
Counter({'b'๏ผš 2, 'a'๏ผš 1})
»> print(c | d)
Counter({'a': 4, 'd'๏ผš 4, 'c': 3, 'b': 2})

namedtuple ๋ชจ๋“ˆ


: ํŠœํ”Œ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์–ด๋–ค ํŠน์ • ๋ฐ์ดํ„ฐ๋Š” ์ €๋งˆ๋‹ค ๊ทœ์ •๋œ ์ •๋ณด๊ฐ€ ์žˆ์Œ
  • ex) ํ•™์ƒ์ด๋ผ๋Š” ์ •๋ณด→ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ณ€์ˆ˜(ํ•™๋ฒˆ, ์ด๋ฆ„, ํ•™๋…„, ํ•™๊ณผ ๋“ฑ)๊ฐ€ ์žˆ์Œ
  • ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•ด๋„ ๋˜์ง€๋งŒ, ๋‚˜์ค‘์—๋ผ๋„ ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋ฅด๊ธฐ์— ์‚ฌ์šฉ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
    • (C ์–ธ์–ด์—์„œ๋Š” struct๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ)
  • → ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ํŠœํ”Œ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•ด ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ namedtuple์ž„
  • ์ขŒํ‘œ ํ‰๋ฉด์—์„œ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Point๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•œ namedtuple
 »> from collections import namedtuple
 »>
 »> Point = namedtuple('Point', ['x', 'y'])
 »> p = Point(ll, y=22)
 »> p
 Point(x=ll, y=22)
 »> p.x, p.y 
(11, 22) 
 »> print(p[0] + p[1]) 
 33
  • Point = namedtuple(’Point', ['x', 'y']) ์ฝ”๋“œ์—์„œ Point ๊ฐ์ฒด์˜ ์ด๋ฆ„์€ Point๋กœ ์ง€์ •ํ•˜๊ณ , ์ €์žฅ๋˜๋Š” ์š”์†Œ์˜ ์ด๋ฆ„์„ x์™€ y๋กœ ์ง€์ •ํ•จ
  • ๋‹ค์Œ์œผ๋กœ Point ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ
    • ์ƒ์„ฑ์€ ํ•จ์ˆ˜์™€ ๋น„์Šทํ•จ
    • Point ๊ฐ์ฒด์—์„œ x์™€ y๋ฅผ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๊ฐ๊ฐ p = point(11, y=22)์—์„œ ์ฐจ๋ก€๋กœ ์‚ฌ์šฉ๋˜์–ด ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
    • ์ž…๋ ฅ๋œ ๊ฐ’์€ p ๋ณ€์ˆ˜์— ์ €์žฅ
    • ** p ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ• **: p.x, p.y์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋ช…๊ณผ ์š”์†Œ์˜ ์ด๋ฆ„์„ ์ (.)์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ ๋ถˆ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Œ: ์ธ๋ฑ์Šค๋Š” ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ์Œ→ p[1]์€ Point ๊ฐ์ฒด์—์„œ ๋‘ ๋ฒˆ์งธ๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ•˜๋Š” y๊ฐ’์— ๋Œ€์‘
    • ⇒ ์ด๋กœ ์ธํ•ด ๋ง์…ˆ ์—ฐ์‚ฐ์ด๋‚˜ ์–ธํŒจํ‚น ์—ฐ์‚ฐ ๋“ฑ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ด์ง
    • → p[0]์€ Point ๊ฐ์ฒด์—์„œ ๋จผ์ € ์ €์žฅ๋˜์–ด์•ผํ•˜๋Š” x๊ฐ’์— ๋Œ€์‘
    • (2) ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • (1) ์š”์†Œ์˜ ์ด๋ฆ„์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

CHAPTER011_๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€

01_๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€์˜ ์ดํ•ด

  • ํŒŒ์ด์ฌ → ๋งค์šฐ ๊ฐ„๊ฒฐํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ๊ฐ€์žฅ ํฐ ์ด์œ  → ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฏธ ํŒŒ์ด์ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ
  • ๋ชจ๋“ˆ: ์ด๋ฏธ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ
  • ํŒจํ‚ค์ง€: ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฌถ์Œ

๋ชจ๋“ˆ์˜ ๊ฐœ๋…


  • ๋งŽ์€ ์ œํ’ˆ๋“ค์€ ์—ฌ๋Ÿฌ ๋ถ€ํ’ˆ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ชจ๋“ˆํ™”๋˜์–ด ํŒ๋งค๋˜๊ณ  ์žˆ์Œ
    • ๋Œ€ํ‘œ์ ์ธ ์˜ˆ: ๋ ˆ๊ณ  ๋ธ”๋ก
      • ํ•˜๋‚˜๋งŒ์œผ๋กœ๋„ ์ œํ’ˆ์ด์ง€๋งŒ, ๋‹ค๋ฅธ ๋ธ”๋ก๊ณผ ์—ฐ๊ฒฐ ๋ฐ ํฐ ๋ฐ‘ํŒ์— ์กฐ๋ฆฝํ•จ์œผ๋กœ์จ ๊ฑฐ๋Œ€ํ•œ ์ž‘ํ’ˆ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
      • ์ด๋•Œ ๋ ˆ๊ณ  ๋ธ”๋ก ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ๋ชจ๋“ˆ
      • ์ž๋™์ฐจ ๋ถ€ํ’ˆ, ๋ฒฝ๋Œ ๋“ฑ…
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ๋ชจ๋“ˆ: ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ ์กฐ๊ฐ
    • ๊ฐ ๋ชจ๋“ˆ ์—ญ์‹œ ์ €๋งˆ๋‹ค ์—ญํ• ์ด ์žˆ์–ด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์—ฐ๊ฒฐ๋˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      • ์ธํ„ฐํŽ˜์ด์Šค: ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์•ฝ์†(ํ•จ์ˆ˜์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์•ฝ์†)
  • → ํ•˜๋‚˜ํ•˜๋‚˜ ์—ฐ๊ฒฐํ•ด ์–ด๋–ค ๋ชฉ์ ์„ ๊ฐ€์ง„ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ
  • ๋‚ด์žฅ ๋ชจ๋“ˆ: ํŒŒ์ด์ฌ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ
    • ๋Œ€ํ‘œ์ ์œผ๋กœ random ๋ชจ๋“ˆ
      • random ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ
       »> import random
       »> random.randint(1, 1000)
       198
      
      • ์‹คํ–‰→ 1~1000 ์ค‘ ์ž„์˜์˜ ์ˆซ์ž๊ฐ€ ์ƒ์„ฑ
      ** import ๊ตฌ๋ฌธ ** ⇒ ๋’ค์— ์žˆ๋Š” ๋ชจ๋“ˆ, ์ฆ‰ random์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜ธ์ถœํ•˜๋ผ๋Š” ๋ช…๋ น์–ด
    • → ๋‚œ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑ์‹œ์ผœ ์ฃผ๋Š” ๋ชจ๋“ˆ

ํŒจํ‚ค์ง€์˜ ๊ฐœ๋…


: ๋ชจ๋“ˆ์˜ ๋ฌถ์Œ

  • from: ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€๋ถ€ํ„ฐ ํ˜ธ์ถœํ•˜๋Š” ๋ช…๋ น์–ด 

→ ์ผ์ข…์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€ ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ์ด ์žˆ๋Š”๋ฐ, ์ด ๋ชจ๋“ˆ๋“ค์ด ์„œ๋กœ ํฌํ•จ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ ๊ฑฐ๋Œ€ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ฆ

02_๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ

๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ ์‹ค์Šต


  • ํŒŒ์ด์ฌ์—์„œ๋Š” .py ํŒŒ์ผ ์ž์ฒด๊ฐ€ ๋ชจ๋“ˆ
  • ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•→ ๋‹ค๋ฅธ ํŒŒ์ด์ฌ ํŒŒ์ผ์ด๋‚˜ ํŒŒ์ด์ฌ ์…ธ์—์„œ import๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Œ
  • → ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ .py ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , ๊ทธ ํŒŒ์ผ์— ํ•„์š”ํ•œ ํ•จ์ˆ˜๋ฅผ ์ €์žฅ
  • ๊ฐ„๋‹จํ•œ ๋ชจ๋“ˆ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ
  • .py๋กœ ์ €์žฅํ•ด์•ผ ํ•จ
  • ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

  • ** 1ํ–‰์˜ import fah_converter ์ฝ”๋“œ **→ ์ฆ‰ .py ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์ด ๋จ
    • ๋ชจ๋“ˆ: fah_converter
    • fahrenheit = fah_converter.covert_c_to_f (celsius) ⇒ ํ•ด๋‹น ๋ชจ๋“ˆ ์•ˆ์˜ covert_c_to_f() ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ
    !! ํ˜ธ์ถœ๋ฐ›๋Š” ๋ชจ๋“ˆ๊ณผ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ์žˆ์–ด์•ผ ํ•จ !!
  • (fah_converter.py์™€ module_ex.py๊ฐ€ ๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ์žˆ์–ด์•ผ ๋ฌธ์ œ ์—†์ด ์‹คํ–‰)
  • → ๊ธฐ์กด์— ๋งŒ๋“  ์ฝ”๋“œ ํŒŒ์ผ์—์„œ .py๋ฅผ ๋นผ๊ณ  ํ•ด๋‹น ํŒŒ์ผ์˜ ์ด๋ฆ„๋งŒ ์ž…๋ ฅํ•˜๋ฉด ํŒŒ์ผ ๋‚ด์˜ ํ•จ์ˆ˜ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋„ค์ž„์ŠคํŽ˜์ด์Šค


: ๋ชจ๋“ˆ ํ˜ธ์ถœ์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ

  • ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ ์•ˆ์— ํด๋ž˜์Šค • ํ•จ์ˆ˜ • ๋ณ€์ˆ˜ ์กด์žฌ→ import๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
    • but, ๋•Œ๋กœ๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ํ˜ธ์ถœ๋œ ๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌ
      • ์‹ค์ˆ˜ ๋˜๋Š” ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋‹ค ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    → ์ด ๊ฒฝ์šฐ ํ˜ธ์ถœ๋œ ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ์ง€์ •ํ•ด์•ผ ํ•จ
  • → ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด ๋ฐ”๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

(1) ๋ชจ๋“ˆ ์ด๋ฆ„์— ์•Œ๋ฆฌ์•„์Šค(alias) ์ƒ์„ฑ → ๋ชจ๋“ˆ ์•ˆ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์•Œ๋ฆฌ์•„์Šค→ ์ผ์ข…์˜ ๋ณ„์นญ์œผ๋กœ ๋ชจ๋“ˆ์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ” ๋ถ€๋ฅผ ๋•Œ ์‚ฌ์šฉ
    • ๋ชจ๋“ˆ์˜ ์ด๋ฆ„์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ฝ”๋“œ์™€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ด๋ฆ„์ผ ๋•Œ as ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ์˜ ์ด๋ฆ„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐ”๊ฟ” ์‚ฌ์šฉ
    • ex)
       1 import fah_converter as fah # ์ด์ „์— ๋งŒ๋“  fah_converter๋ชจ๋“ˆ์„ fah๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝ ํ›„ ํ˜ธ์ถœ
       2 print(fah.covert_c_to_f(41.6)) #  fah_converter ๋ชจ๋“ˆ ์•ˆ์— covert_c_to f() ํ•จ์ˆ˜ ํ˜ธ์ถœ
      โ€‹

→ ‘๋ชจ๋“ˆ๋ช….ํ•จ์ˆ˜๋ช…(๋˜๋Š” ํด๋ž˜์Šค๋ช…/๋ณ€์ˆ˜๋ช…)’์˜ ํ˜•ํƒœ๋กœ ํ•ด๋‹น ๋ชจ๋“ˆ ์•ˆ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

(2) from ๊ตฌ๋ฌธ ์‚ฌ์šฉ→ ๋ชจ๋“ˆ์—์„œ ํŠน์ • ํ•จ์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋งŒ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ex)
     1 from fah_converter import covert_c_to_f
     2 print(covert_c_to_f(41.6))
    โ€‹

→ 1ํ–‰์ฒ˜๋Ÿผ ‘from ๋ชจ๋“ˆ๋ช… import ๋ชจ๋“ˆ ์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ช…’์˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ ์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

→ ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋ช…์„ ์จ ์ฃผ์ง€ ์•Š์•„๋„ ํ•จ์ˆ˜์˜ ๋‹จ๋… ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ

→ ์ฃผ์˜ํ•  ์  ⇒ from์€ ๊ผญ ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹˜

→ ํŒจํ‚ค์ง€ ํ˜ธ์ถœ ๋ฐ ํ•ด๋‹น ํŒจํ‚ค์ง€ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•  ๋•Œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

(3) ๋ณ„ํ‘œ(*) ์‚ฌ์šฉ → ํ•ด๋‹น ๋ชจ๋“ˆ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ด

    • ‘from ๋ชจ๋“ˆ๋ช… import ์ˆ˜’ ⇒ ํ•ด๋‹น ๋ชจ๋“ˆ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๋œป
      1 from fah_converter import
      2 print(covert_c_to_f(41.6))
      โ€‹
    •  
  • ์„ธ ๊ฐ€์ง€ ์ค‘ ๊ฐ€์žฅ ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ• ⇒ ์•Œ๋ฆฌ์•„์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•→ ์ฆ‰, ๊ฐ™์€ ํ•จ์ˆ˜๋ผ๋„ covert_c_to_f๋ณด๋‹ค fah.covert_c_to_f๋ผ๊ณ  ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ⇒ ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜ ๋ฐ ํด๋ž˜์Šค๊ฐ€ ์–ด๋””์„œ ๋‚˜์˜ค๋Š” ์ง€๋ฅผ ๋ช…ํ™•ํžˆ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ

๋‚ด์žฅ ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ


  • ํŒŒ์ด์ฌ→ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ž ์ฒ˜๋ฆฌ, ์›น, ์ˆ˜ํ•™๊ณผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๋ชจ๋“ˆ ์ œ๊ณต + ๋ณ„๋‹ค๋ฅธ ์กฐ์น˜ ์—†์ด import๋ฌธ ํ•œ ์ค„๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

(1) random ๋ชจ๋“ˆ

: ๋‚œ์ˆ˜ ์ƒ์„ฑ ๋ชจ๋“ˆ

  • ๋ชจ๋“ˆ ๊ตฌ์„ฑ
    • randint() ํ•จ์ˆ˜→ ์ •์ˆ˜ ๋ชจ๋“ˆ ์ƒ์„ฑ
    • random() ํ•จ์ˆ˜→ ์ž„์˜์˜ ๋‚œ์ˆ˜ ์ƒ์„ฑ

(2) time ๋ชจ๋“ˆ

: ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ ์‹œ๊ฐ์„ ์•Œ๋ ค์คŒ(์‹œ๊ฐ„๊ณผ ๊ด€๋ จ)

→ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ํ˜„์žฌ ์‹œ๊ฐ์„ ์•Œ ์ˆ˜ ์žˆ์Œ

(3) urllib ๋ชจ๋“ˆ

: ์›น๊ณผ ๊ด€๋ จ →์›น ์ฃผ์†Œ์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ด

  • ๋Œ€ํ‘œ์ ์œผ๋กœ request ๋ชจ๋“ˆ์„ ์‚ฌ์šฉ→ ํŠน์ • URL์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ

  • urllib.request.urlopen() → ๊ด„ํ˜ธ ์•ˆ์— ํŠน์ • ์›น ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅ ์‹œ ํ•ด๋‹น ์ฃผ์†Œ์˜ HTML ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ด
  • ์ด์™ธ์—๋„ ๋งŽ์€ ํŒŒ์ด์ฌ ๋ชจ๋“ˆ ์กด์žฌ
    • ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•→ ๊ตฌ๊ธ€์—์„œ ๊ฒ€์ƒ‰(ํŠนํžˆ ์˜์–ด๋กœ ๊ฒ€์ƒ‰)
    • ex) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ˆ˜ํ–‰์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ์•Œ์•„๋‚ด๋Š” ๋ชจ๋“ˆ์„ ์ฐพ๊ณ  ์‹ถ์„ ๋•Œ
    <aside></aside>
    • ์šฐ๋ฆฌ๋‚˜๋ผ์˜ ๋Œ€ํ‘œ ์‚ฌ์ดํŠธ์ธ ํŒŒ์ด์ฌ ์ฝ”๋ฆฌ์•„์— ๋ฌธ์˜
    • → ํŒŒ์ด์ฌ ์ฝ”๋ฆฌ์•„์˜ ํŽ˜์ด์Šค๋ถ ํŽ˜์ด์ง€→ ํŒŒ์ด์ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ
  • → ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ
  • python time module run time
  • →์ด ๋ชจ๋“ˆ๋“ค์„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•

03_ํŒจํ‚ค์ง€ ๋งŒ๋“ค๊ธฐ

ํŒจํ‚ค์ง€์˜ ๊ตฌ์„ฑ


  • ํŒจํ‚ค์ง€: ํ•˜๋‚˜์˜ ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์˜ ๋ฌถ์Œ
  • ๋ชจ๋“ˆ ๊ตฌ์„ฑ
    • ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์ด๋ฃจ์–ด์ง
  • ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ
    • ํŒŒ์ผ์ด ํฌํ•จ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ(ํด๋”)๋กœ ๊ตฌ์„ฑ
    • ⇒ ํŒจํ‚ค์ง€ : ์—ฌ๋Ÿฌ ๊ฐœ์˜ .py ํŒŒ์ผ์ด ํ•˜๋‚˜์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
    • ํŒŒ์ด์ฌ์—์„œ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ํŒจํ‚ค์ง€์˜ ์˜ˆ์•ฝ์–ด
    • ์ฃผ์˜ํ•  ์ → ํŒŒ์ผ๋ช… ์ž์ฒด๊ฐ€ ์˜ˆ์•ฝ์–ด๋ฅผ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์กด์žฌ
    ⇒ ๋”ฐ๋ผ์„œ ํŒจํ‚ค์ง€ ๋‚ด์˜ ๋ช‡๋ช‡ ํŒŒ์ผ์—๋Š” **init,main** ๋“ฑ์˜ ํ‚ค์›Œ๋“œ ํŒŒ์ผ๋ช…์ด ์‚ฌ์šฉ๋จ

ํŒจํ‚ค์ง€ ๋งŒ๋“ค๊ธฐ ์‹ค์Šต


  • ์ธํ„ฐ๋„ท์—์„œ ์ฃผ์‹ ์ •๋ณด๋ฅผ ๋ฐ›์•„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ , ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
  • 1 ๋‹จ๊ณ„: ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์„ฑํ•˜๊ธฐ
    • ํŒจํ‚ค์ง€ ์ด๋ฆ„→ ‘roboadvisor’(ํŒจํ‚ค์ง€ ์ด๋ฆ„ ๋Œ€๋ถ€๋ถ„์€ ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉ)
    • roboadvisor์— ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •(2) database(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค): ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ
    • (3) analysis(๋ถ„์„): ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์˜๋ฏธ ์žˆ๋Š” ๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋Š” ๊ธฐ๋Šฅ
    • (1) crawling(ํฌ๋กค๋ง): ์ฃผ์‹ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ„ฐ๋„ท์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ
    • ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„→ ๊ฐ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ ๋‹ค์‹œ ์„ธ๋ถ€ ํŒจํ‚ค์ง€์— ๋งž์ถฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ตฌ์„ฑ
      • ๋จผ์ € cmd์ฐฝ์— ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑ
  • cmd์ฐฝ์—์„œ ๋งŒ๋“  ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๊ตฌ์„ฑ
  • 2๋‹จ๊ณ„: ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„๋กœ ํ•„์š”ํ•œ ๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ
    • ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€→ ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŒจํ‚ค์ง€ ์•ˆ์— ๋˜ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ⇒ **init**.py: ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํŒจํ‚ค์ง€์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ˆ์•ฝ ํŒŒ์ผ
    • but, ๊ฐ๊ฐ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜ˆ์•ฝ๋œ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•จ
    • **init**.py: ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํŒจํ‚ค์ง€์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ˆ์•ฝ ํŒŒ์ผ
      • ๊ธฐ๋ณธ .py ๋ชจ๋“ˆ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์— **init**.py๋ฅผ ์ถ”๊ฐ€→ ํŒจํ‚ค์ง€์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง
    • ๊ฐ๊ฐ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— .py ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ตฌ์„ฑ
    • ๊ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€ ํฌํ•จ๋œ ๋ชจ๋“ˆ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„
      • analysis ๋””๋ ‰ํ„ฐ๋ฆฌ
        1 def series_test()๏ผš
        2     print("series")
        
        1 def statics_test()๏ผš
        2     print("statics")
        
    • ์‹ค์ œ ์‚ฌ์šฉ→ ํŒŒ์ด์ฌ ์…ธ์— ์ž…๋ ฅ
    »> from roboadvisor.analysis import series 
    »> series.series_test()
    series
    
    → roboadvisor์˜ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ด์ฌ ์…ธ์„ ์‹คํ–‰ํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰
    • ์ฝ”๋“œ ์‹คํ–‰
      • ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™๋  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ๋“ค์˜ ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ ์ €์žฅ
      • ํ•œ ๋ฒˆ pycache’๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๊ทธ ์‹œ์ ์—์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ˆ˜์ •ํ•ด๋„ ๊ฒฐ๊ณผ ๋ฐ˜์˜ X
      • ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ํŒŒ์ด์ฌ ์…ธ์ด ์™„์ „ํžˆ ์ข…๋ฃŒํ•œ ํ›„ ์ˆ˜์ •ํ•ด์•ผ ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜์˜๋จ
    • → roboadvisor ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ‘pycache****’๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
  • 3๋‹จ๊ณ„: ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„๋กœ__ init__.py ๊ตฌ์„ฑํ•˜๊ธฐ
    • __init__: ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํŒŒ์ด์ฌ์˜ ํŒจํ‚ค์ง€๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ
    • ์ผ๋ฐ˜์ ์œผ๋กœ **init**.py ํŒŒ์ผ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋‹น ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“ˆ์— ๊ด€ํ•œ ์ •๋ณด๊ฐ€ ์กด์žฌ
  • roboadvisor ๋””๋ ‰ํ„ฐ๋ฆฌ์— 3๊ฐœ์˜ ํ•˜์œ„ ํŒจํ‚ค์ง€ analysis, crawling, database๊ฐ€ ์กด์žฌ
  • ์ด ๊ฐ๊ฐ์˜ ํŒจํ‚ค์ง€๋ฅผ _ init__.py ์•ˆ์— __all__๊ณผ import๋ฌธ์„ ์‚ฌ์šฉํ•ด ์„ ์–ธ
  • __all__์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธํ˜•์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ฐจ๋ก€๋Œ€๋กœ ํ•˜์œ„ ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ , ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€๋ฅผ import๋ฌธ์œผ๋กœ ํ˜ธ์ถœ
  • 4๋‹จ๊ณ„: main_.py ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
    • ํŒจํ‚ค์ง€๋ฅผ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด roboadvisor ๋””๋ ‰ํ„ฐ๋ฆฌ์— **main.**py ํŒŒ์ผ์„ ๋งŒ๋“ฆ
    • main.py ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ์ด์œ → ํŒจํ‚ค์ง€ ์ž์ฒด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•จ
    • ํŒŒ์ผ ๊ตฌ์„ฑ(2) if **name** ==’main’๊ตฌ๋ฌธ ์•„๋ž˜์— ์‹ค์ œ ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
    • (1) ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์„ from๊ณผ import๋ฌธ์œผ๋กœ ํ˜ธ์ถœ

  • 5๋‹จ๊ณ„: ์‹คํ–‰ํ•˜๊ธฐ(ํŒจํ‚ค์ง€ ์ด๋ฆ„๋งŒ ํ˜ธ์ถœ๏ผ‰
    • ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ์ตœ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ‘python ํŒจํ‚ค์ง€๋ช…'์„ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰
    python roboadvisor
    series
    parser
    

ํŒจํ‚ค์ง€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค


: ํŒจํ‚ค์ง€ ๋‚ด์—์„œ ๋ชจ๋“ˆ์„ ์„œ๋กœ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ

  • ๋ชจ๋“ˆ๊ณผ ๋‹ฌ๋ฆฌ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ์กฐ๊ธˆ ๋ณต์žกํ•จ
  • ์ข…๋ฅ˜
    • ์ ˆ๋Œ€ ์ฐธ์กฐ: ์ „์ฒด ํŒจํ‚ค์ง€์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ชจ๋“ˆ์˜ ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ
    • ์ƒ๋Œ€ ์ฐธ์กฐ: ํ˜ธ์ถœํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ
  • ์ ˆ๋Œ€ ์ฐธ์กฐ
  • ํŒจํ‚ค์ง€ ์ด๋ฆ„-series๊นŒ์ง€ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅ

→ ‘from ์ „์ฒด ํŒจํ‚ค์ง€.์„œ๋ธŒ ํŒจํ‚ค์ง€ import ๋ชจ๋“ˆ’ ํ˜•์‹

  • ์ƒ๋Œ€ ์ฐธ์กฐ
    • ํ•ต์‹ฌ→ ํ˜„์žฌ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ

04_๊ฐ€์ƒํ™˜๊ฒฝ ์‚ฌ์šฉํ•˜๊ธฐ

๊ฐ€์ƒํ™˜๊ฒฝ์˜ ๊ฐœ๋…


: ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๊ฐ ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
    • ex. ๋ฐ์ดํ„ฐ ๋‹ค๋ฃจ๋Š” ํ”„๋กœ์ ํŠธ / ์›น ๋‹ค๋ฃจ๋Š” ํ”„๋กœ์ ํŠธ → ์„ฑ๊ฒฉ์ด ๋งค์šฐ ๋‹ค๋ฆ„
  • ํŒŒ์ด์ฌ → ์ด๋Ÿฐ ๊ฒฝ์šฐ ์ง€์›์„ ์œ„ํ•ด ๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ ์ œ๊ณต
  • ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰ํ•  ๋•Œ
    • ์ฝ”๋“œ ์ˆ˜ํ–‰ํ•  ๊ธฐ๋ณธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
    • ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๊นŒ์ง€ ์„ค์น˜ ⇒ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์˜ํ–ฅ ์ฃผ์ง€ ์•Š๋„๋ก ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ผ๊ณ  ํ•จ
  • ๋Œ€ํ‘œ์ ์ธ ๊ฐ€์ƒํ™˜๊ฒฝ ๋„๊ตฌ
    • virtualenv
      • ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ์ œ๊ณต ๊ฐ€์ƒํ™˜๊ฒฝ ๋„๊ตฌ
      • pip ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ฐ€๋Šฅ
    • conda
      • miniconda์˜ ์ „์šฉ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ
      • ๊ฐ€์ƒํ™˜๊ฒฝ ๊ด€๋ฆฌ + ํŒจํ‚ค์ง€ ์„ค์น˜

๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ


(1) ๊ฐ€์ƒํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

  • ๋จผ์ € ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ cmd ์ฐฝ์— ์ž…๋ ฅ
     conda create -n my_project python=3.4
    โ€‹
  • conda: ์‹คํ–‰ ๋ช…๋ น์–ด
  • create: ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ์ธ์ˆ˜
  • -n: name์˜ ์ค„์ž„๋ง
  • my_project: ๊ตฌ์„ฑํ•  ๊ฐ€์ƒํ™˜๊ฒฝ ์ด๋ฆ„
  • python=3.4: ์„ค์น˜๋˜๋Š” ํŒŒ์ด์ฌ์˜ ๋ฒ„์ „

⇒ ‘my_project๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ€์ƒํ™˜๊ฒฝ์„ python 3.4 ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ.’

  • ๋ช…๋ น ์‹คํ–‰→ ‘Proceed (๏ผปy๏ผฝ/n)?’์—์„œ y ์ž…๋ ฅ→ ์„ค์น˜ ์‹œ์ž‘

(2) ๊ฐ€์ƒํ™˜๊ฒฝ ์‹คํ–‰ํ•˜๊ธฐ

  • ์‹คํ–‰ ๋ฐฉ๋ฒ•→ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋งŒ๋“ค๋ฉด ๋‚˜ํƒ€๋‚˜๋Š” ํ™”๋ฉด์—์„œ ์„ค๋ช…ํ•ด์คŒ
     

 

⇒ my_project๋ผ๋Š” ๊ฐ€์ƒํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๋ผ๋Š” ์˜๋ฏธ

  • [activate ๊ฐ€์ƒํ™”๋ฉด ์ด๋ฆ„]
  • →์ด์ œ๋ถ€ํ„ฐ ํ•ด๋‹น ๊ฐ€์ƒํ™˜๊ฒฝ์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋งŒ ์‹คํ–‰๋จ
  • ‘where python’์ž…๋ ฅ→ ํ˜„์žฌ ์‹คํ–‰๋˜๋Š” ํŒŒ์ด์ฌ์˜ ์œ„์น˜ ์ถœ๋ ฅ
  • ‘deactivate’ ์ž…๋ ฅ→ ์‹คํ–‰๋œ ๊ฐ€์ƒํ™˜๊ฒฝ ์ข…๋ฃŒ

(3) ๊ฐ€์ƒํ™˜๊ฒฝ ํŒจํ‚ค์ง€ ์„ค์น˜ํ•˜๊ธฐ

  • ํ˜•์‹
    • [conda install ์„ค์น˜ํ•  ํŒจํ‚ค์ง€ ์ด๋ฆ„]
  • matplotlib
    • ๊ทธ๋ž˜ํ”„ ๊ด€๋ฆฌ ํŒจํ‚ค์ง€

(4) ๊ฐ€์ƒํ™˜๊ฒฝ ํŒจํ‚ค์ง€ ์‹ค์Šตํ•˜๊ธฐ

  • matplotlib ์‹ค์Šต