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

[4ํŒ€/๊น€๋ฏผํ˜œ] 7์ฐจ์‹œ ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” - ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2023. 5. 9. 00:00

 

7แ„Žแ…กแ„‰แ…ต_แ„Œแ…กแ„…แ…ญแ„€แ…ฎแ„Œแ…ฉ_แ„€แ…กแ†ผแ„‹แ…ดแ„‹แ…กแ†ซ.pdf
0.54MB
7แ„Žแ…กแ„‰แ…ต_แ„Œแ…กแ„…แ…ญแ„€แ…ฎแ„Œแ…ฉ_แ„€แ…ชแ„Œแ…ฆ.pdf
0.26MB

 

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


๊ฐœ๋…

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

  • ์‚ฌ๋ก€
    • ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ - ํšจ์œจ์ ์œผ๋กœ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๋‚˜๋‹ค ์ˆœ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์Œ
    • ์€ํ–‰ ๋ฒˆํ˜ธํ‘œ - ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€๊ธฐํ‘œ๋ฅผ ๋ฝ‘์„ ๋•Œ๋งˆ๋‹ค ๋Œ€๊ธฐ ์ธ์› 1์”ฉ ์ฆ๊ฐ€, ์€ํ–‰ ์„œ๋น„์Šค ์ด์šฉ ์ข…๋ฃŒ์‹œ 1์”ฉ ๊ฐ์†Œ
    • ํƒ๋ฐฐ ์ˆ˜ํ™”๋ฌผ - ๋‚˜์ค‘์— ๋ฐฐ๋‹ฌ๋˜๋Š” ์ˆ˜ํ™”๋ฌผ์ผ์ˆ˜๋ก ํŠธ๋Ÿญ ์•ˆ์ชฝ์— ๋ฐฐ์น˜, ๋จผ์ € ๋ฐฐ๋‹ฌ๋˜๋Š” ์ˆ˜ํ™”๋ฌผ์ผ์ˆ˜๋ก ํŠธ๋Ÿญ ์ž…๊ตฌ์กฑ์— ๋ฐฐ์น˜
  • ํŒŒ์ด์ฌ์—์„œ์˜ ์ž๋ฃŒ๊ตฌ์กฐ (← ๊ฐ„๋‹จํ•œ ๊ฐœ์š” ์ˆ˜์ค€์—์„œ๋งŒ ํ•™์Šต)์ž๋ฃŒ๊ตฌ์กฐ๋ช… ํŠน์ง•
    ์Šคํƒ stack ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๊ฐ’์ด ๋จผ์ € ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ (last in first out)
    ํ queue ๋จผ์ € ๋“ค์–ด์˜จ ๊ฐ’์ด ๋จผ์ € ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ (first in first out)
    ํŠœํ”Œ tuple ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
    ์„ธํŠธ set ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
    ๋”•์…”๋„ˆ๋ฆฌ dictionary ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์™€ ๊ฐ™์ด ํ‚ค(key)์™€ ๊ฐ’(value)์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ. ํ‚ค๊ฐ’์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์™€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
    ๋ชจ๋“ˆ collections ์œ„์— ์—ด๊ฑฐ๋œ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ํŒŒ์ด์ฌ ๋‚ด์žฅ ๋ชจ๋“ˆ

 

2. ์Šคํƒ๊ณผ ํ


์Šคํƒ stack

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

  • ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜
  • ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ํ˜•ํƒœ
  • ํ‘ธ์‹œpush : ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ | ํŒpop : ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ
    • ์‚ฌ๋ก€; ํƒ๋ฐฐ์ˆ˜ํ™”๋ฌผ
  • ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์Šคํƒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
    • ๋ฆฌ์ŠคํŠธ๋ผ๋Š” ์ €์žฅ ๊ณต๊ฐ„ ์ƒ์„ฑ
    • append() ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ [ํ‘ธ์‹œ]
    • pop() ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ ์ถ”์ถœ [ํŒ]
      • ์‹คํ–‰์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฐ’์ด ์ถ”์ถœ๋˜๊ณ , ๋™์‹œ์— ๊ทธ ๊ฐ’์„ ์ œ์™ธํ•œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ”๋€œ
a=[1,2,3,4,5]
a.append(10).  #push
a
[1,2,3,4,5,10] #๋ฆฌ์ŠคํŠธ์— ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ €์žฅ๋จ
a.append(20).  #push
a
[1,2,3,4,5,10,20]
a.pop()        #pop
20             #๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด ๋จผ์ € ์ถ”์ถœ๋จ
a.pop()
10

  • ์˜ˆ) ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ
word=input("Input a word: ")
word_list=list(word)
print(word_list)

result=[]
for _ in range(len(world_list)):
		result.append(world_list.pop())

print(result)
print(word[::-1])

#์‹คํ–‰๊ฒฐ๊ณผ
Input a word: PYTHON
['P','Y','T','H','O','N']   #print(word_list)
['N','O','H','T','Y','P'].  #print(result)
NOHTYP  #print(word[::-1]) ๋ฆฌ์ŠคํŠธ ์—ญ์ˆœ์œผ๋กœ ์Šฌ๋ผ์ด์‹ฑ
  • ๋จผ์ € ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์ด๋ฅผ ๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (list()ํ•จ์ˆ˜ ์‚ฌ์šฉ)
  • ๊ฐ’์„ ๋ ์•ŒํŒŒ๋ฒณ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ํ•œ ๊ธ€์ž์”ฉ ์ถ”์ถœํ•˜์—ฌ ๋‹ค์‹œ result ๋ฆฌ์ŠคํŠธ์— ํ•˜๋‚˜์”ฉ ์ €์žฅํ•œ๋‹ค.
 โ˜๐Ÿป _๊ธฐํ˜ธ
for๋ฌธ์— _๊ธฐํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์€ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป
⇒ range(len(world_list))์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์„ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ.

 

ํ queue

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

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

 

 

3. ํŠœํ”Œ๊ณผ ์„ธํŠธ


ํŠœํ”Œ tuple

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

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)๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์„ ์–ธ
  • ํŠน์ง•
    • ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ, ์ธ๋ฑ์‹ฑ, ์Šฌ๋ผ์ด์‹ฑ์ด ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋จ
    • ๋ฆฌ์ŠคํŠธํ˜• ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ํŠœํ”Œ์˜ ๊ฐ’์€ ๋งˆ์Œ๋Œ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ
โ˜๐Ÿป ํŠœํ”Œ์˜ ๊ฐ’์ด ํ•˜๋‚˜๋ฐ–์— ์—†์„ ๋•?
-> ๋ฐ˜๋“œ์‹œ ๊ฐ’ ๋’ค์— ์ฝค๋งˆ(,)๋ฅผ ๋ถ™์—ฌ t๊ฐ€ ํŠœํ”Œ์ž„์„ ์„ ์–ธํ•ด์•ผ ํ•จ
-> t=(1)๋กœ ์ž…๋ ฅํ•œ๋‹ค๋ฉด ํŒŒ์ด์ฌ์€ t=1๋กœ ์ธ์‹ํ•จ
  • ํ•„์š”์„ฑ
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋‚ด๊ฐ€ ๋งŒ๋“  ํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•™๋ฒˆ, ์ด๋ฆ„, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ๋“ฑ ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ ๋˜๋Š” ์ •๋ณด

 

์„ธํŠธ set

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

  • ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ ๊ฐœ๋…๊ณผ ์œ ์‚ฌ
  • ์œ ์šฉ์„ฑ
    • ๋ฌธ์„œ ํ•˜๋‚˜์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋‹จ์–ด ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์…€ ๋•Œ
s=set([1,2,3,1,2,3])
print(s)
{1,2,3}
  • ์„ธํŠธ ์„ ์–ธ
    • set()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์Œ
    • ์ด๋•Œ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ›„ ์ž๋™์œผ๋กœ {1,2,3}์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ถœ๋ ฅ๋จ
  • ์‚ญ์ œ๋‚˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•จ
s
{1,2,3}
s.add(1).  #์›์†Œ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
s
{1,2,3}

s.remove(1)  #์›์†Œ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜
s
{2,3}

s.update([1,4,5,6,7])  #์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
s
{1,2,3,4,5,6,7}

s.discard(3)    #์›์†Œ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜
s
{1,2,4,5,6,7}

s.clear()  #๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ์ง€์šฐ๋Š” ํ•จ์ˆ˜
s
set()
  • ๊ฐ’์€ ๋ชจ๋‘ ์ˆœ์„œ ์—†์ด ์ €์žฅ๋˜๋Š” ๋™์‹œ์— ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ €์žฅ๋จ

์ง‘ํ•ฉ์—ฐ์‚ฐ

์—ฐ์‚ฐ ํ•จ์ˆ˜ ๊ธฐํ˜ธ ์˜ˆ์‹œ

ํ•ฉ์ง‘ํ•ฉ union    
๊ต์ง‘ํ•ฉ intersection & s1.intersection(s2), s1 & s2
์ฐจ์ง‘ํ•ฉ difference - s1.difference(s2), s1 - s2
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.intersection(s2) #ํ˜น์€ s1 & s2
{3,4,5}
s1.difference(s2)   #ํ˜น์€ s1 - s2
{1,2}

 

4. ๋”•์…”๋„ˆ๋ฆฌ dictionary


DEF) ์˜์–ด์‚ฌ์ „์—์„œ ๋‹จ์–ด๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํ‚ค(key)์™€ ๊ฐ’(value)์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ์˜ ์œ ์ผํ•œ ๊ตฌ๋ถ„์ž์ธ ํ‚คkey๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ’value์ด๋ผ๋Š” ์ด๋ฆ„๊ณผ ์Œ์œผ๋กœ ์ €์žฅ → ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
    • ex. ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ํ•™๋ฒˆ, ์ œํ’ˆ ๋ฒˆํ˜ธ ๋“ฑ

๋”•์…”๋„ˆ๋ฆฌ ์„ ์–ธ

  • ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ๊ตฌ์„ฑ. (๊ด„ํ˜ธ ()๋Š” ํŠœํ”Œ ์„ ์–ธ, ๋Œ€๊ด„ํ˜ธ []๋Š” ๋ฆฌ์ŠคํŠธ ์„ ์–ธ ๋ฐฉ์‹)

๋”•์…”๋„ˆ๋ฆฌ ๋ณ€์ˆ˜ = {ํ‚ค1 : ๊ฐ’1, ํ‚ค2 : ๊ฐ’2, ํ‚ค3 : ๊ฐ’3, … }

  • ํ•™๋ฒˆ(ํ‚ค) ์ด๋ฆ„(๊ฐ’)
    20140012 Sungchul
    20140059 Jiyong
    20150234 Jaehong
    20140058 Wonchul
    student_info = {20140012:'Sungchul', 20140059:'Jiyong', 20150234:'Jaehong', 20140058:'Wonchul'}
    
  • ๊ฐ’์—๋Š” ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ. ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์ด ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ํŠœํ”Œ/์„ธํŠธ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ํ‚ค๋Š” ๋ฌธ์ž์—ด ๋˜๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ๋„ ์„ ์–ธ ๊ฐ€๋Šฅํ•จ (*๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ๋ช…ํ™•ํžˆ ์ธ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”)

 

  • ๋ณ€์ˆ˜ ํ˜ธ์ถœ: ํ•ด๋‹น ๊ฐ’์˜ ํ‚ค๋ฅผ ๋Œ€๊ด„ํ˜ธ [] ์•ˆ์— ๋„ฃ์–ด ํ˜ธ์ถœ
    • student_info[20140012] ⇒ ‘Sungchul’
  • ๋”•์…”๋„ˆ๋ฆฌ์˜ ์žฌํ• ๋‹น: ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ฐ™์Œ. ํ‚ค๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹น.

 

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

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.values()
dict_values([1, 82, 86, 81]) #๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’๋งŒ ์ถœ๋ ฅํ•จ
  • items() : ํ‚ค—๊ฐ’ ์Œ์„ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜
country_code.items()
dict_items([('America', 1), ('Korea', 82), ('China', 86), ('Japan', 81)])

 

5. collections ๋ชจ๋“ˆ


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

  • ํšจ์œจ์ ์ด๊ณ  ํŽธ๋ฆฌํ•จ
  • deque, OrderedDict, defaultdict, Counter, namedtuple ๋“ฑ ์ œ๊ณต
#์ž๋ฃŒ๊ตฌ์กฐ ํ˜ธ์ถœ ์ฝ”๋“œ

from collections import deque
from collections import OrderedDict
from collections import defualtdict
from collections import Counter
from collections import namedtuple

 

(1) 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])
    
    deque_list.pop()
    4
    deque_list.pop()
    3
    
    • append() ํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋Š˜๋ฆฌ๋ฉด์„œ ์Œ“์ž„
    • deque_list.pop() ์ˆ˜ํ–‰ ์‹œ ์˜ค๋ฅธ์ชฝ ์š”์†Œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ถ”์ถœ๋จ
  • ํ ์‚ฌ์šฉ
    • pop(0)์€ deque์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ
from collections import deque

deque_list=deque()
for i in range(5):
		deque_list.appendlift(i) #์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๊ฐ’์ด ์Œ“์ž„. [4,3,2,1,0]

print(deque_list)

#์ถœ๋ ฅ
deque([4,3,2,1,0])

 

  • ์žฅ์ 
    • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ linked list ํŠน์ • ์ง€์›
      • ๋ฐ์ดํ„ฐ ์ €์žฅ ์‹œ ์š”์†Œ์˜ ๊ฐ’์„ ํ•œ ์ชฝ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ํ›„, ์š”์†Œ์˜ ๋‹ค์Œ ๊ฐ’์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ•
      • ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ˜•์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
      • rotate() ํ•จ์ˆ˜: ๊ธฐ์กด deque์— ์ €์žฅ๋œ ์š”์†Œ๋“ค ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ธฐ๋ฒ•
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)
print(deque_list)
deque([3,4,0,1,2])

 

  • reversed() ํ•จ์ˆ˜๋กœ ๊ธฐ์กด๊ณผ ๋ฐ˜๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
print(deque(reversed(deque_list)))
deque([0,4,3,2,1])
  • extend(), extendleft() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ต์งธ๋กœ ์˜ค๋ฅธ์ชฝ/์™ผ์ชฝ์œผ๋กœ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
deque_list.extend([5,6,7])
print(deque_list)
deque([1,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])
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์  ์‚ฌ์šฉ๊ณผ ๋น ๋ฅธ ์†๋„

 

(2) OrderedDict ๋ชจ๋“ˆ

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

  • ํ‚ค์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅ. ์ €์žฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅ
  • ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ ํ‚ค๋‚˜ ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ ์‚ฌ์šฉ
def sort_by_key(t):
		retuen t[0]

from collections import OrderedDict

d=dict()
d['x']=100
d['y']=200
d['z']=300
d['l']=500

#sorted() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ ฌ
for k, v in OrderedDict(sorted(d.items(), key=sort_by_key)).items():  
		print(k, v)

#์ถœ๋ ฅ
l 500
x 100
y 200
z 300
  • ๋”•์…”๋„ˆ๋ฆฌ ๊ฐ’์ธ ๋ณ€์ˆ˜ d๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋งŒ๋“ฆ → sorted()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ ฌ
    • sorted(d.items(), key=sort_by_key)
    • [(’l’, 500)], (’x’, 100), (’y’, 200), (’z’, 300)]
    • ๊ธฐ์กด์˜ ๋”•์…”๋„ˆ๋ฆฌ๋‚˜ ๋ฆฌ์ŠคํŠธ์˜ ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

 

(3) defaultdict ๋ชจ๋“ˆ

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

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

d=defaultdict(lambda:0)
print(d["first'])

0 #์‹คํ–‰๊ฒฐ๊ณผ
  • d=defaultdict(lambda:0)
    • =defqultdict ๋ชจ๋“ˆ์„ ์„ ์–ธํ•˜๋Š” ๋™์‹œ์— ์ดˆ๊นƒ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •
    • ‘return 0’๊ณผ ๋™์ผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ
    • ์–ด๋–ค ํ‚ค๊ฐ€ ๋“ค์–ด์˜ค๋”๋ผ๋„ ์ฒ˜์Œ๊ฐ’์€ ์ „๋ถ€ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค๋Š” ๋œป
from collections import defaultdict

s=[('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d=defaultdict(list)
for k, v in s:
		d[k].append(v)

print(d.items())
[('blue', [2,4]), ('red', [1]), ('yellow', [1,3])]

#์ถœ๋ ฅ
dict_items(['yellow', [1,3]), ('blue', [2,4]), ('red', [1])])
  • d=defaultdict(list)
    • ํŠœํ”Œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅ
    • ๋ณ€์ˆ˜ d๋ฅผ defaultdict ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ฉด์„œ ์ดˆ๊นƒ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ์„ ์–ธ
    • ์ƒˆ๋กœ์šด ํ‚ค ๊ฐ’์ด ์—†๋”๋ผ๋„ ๋ณ„๋„๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
    • → ์ฝ”๋“œ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ 

 

(4) Counter ๋ชจ๋“ˆ

: ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•. ์‹œํ€€์Šค ์ž๋ฃŒํ˜•(๋ฆฌ์ŠคํŠธ, ๋ฌธ์ž์—ด ๋“ฑ) ๋‚ด ์ €์žฅ๋œ ์š”์†Œ ์ค‘ ๊ฐ™์€ ๊ฐ’์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜.

  • ๊ธฐ์กด ๋ฌธ์ž์—ด๊ฐ’์„ ๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ๋ณ€ํ™˜ ํ›„ text ๋ณ€์ˆ˜์— ์ €์žฅ
from collections import Counter

text=list("gallahad")
text
['g','a','l','l','a','h','a','d']
c=Counter(text)
c
Counter({'a':3, 'l':2, 'g':1, 'h':1, 'd':1})
c["a"]
3
  • ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์„ฑ
    • elements() ํ•จ์ˆ˜ ์‚ฌ์šฉํ•ด ๊ฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฆฌ์ŠคํŠธํ˜•์˜ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
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']
  • ํ‚ค์›Œ๋“œ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์„ฑ
    • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ํ‚ค๋กœ, ์‹ค์ œ ๊ฐ’์„ ๊ฐ’์œผ๋กœ ํ•จ
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
Counter({'a':3, 'b':0, 'c':-3, 'd':-6})
#๋ง์…ˆ
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, 'b':4, 'c':3, 'd':2})

 

(5) namedtuple ๋ชจ๋“ˆ

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

from collections import namedtuple

Point=namedtuple('Point', ['x','y'])
p=Point(11, y=22)  #๊ฐ์ฒด์— ๊ฐ’ ์ €์žฅ

p
Point(x=11, y=22)

p.x, p.y #p๋ณ€์ˆ˜ ๊ฐ’ ํ˜ธ์ถœ๋ฒ•1
(11,22)

print(p[0]+p[1]) #p๋ณ€์ˆ˜ ๊ฐ’ ํ˜ธ์ถœ๋ฒ•2
33
  • ์ฝ”๋“œ์„ค๋ช…
    • ์ขŒํ‘œํ‰๋ฉด์—์„œ์˜ ์  ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Point๋ผ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ๊ฐ’ ์ €์žฅ = namedtuple\
    • Point=namedtuple('Point', ['x','y']) → Point ๊ฐ์ฒด์˜ ์ด๋ฆ„์€ Point๋กœ ์ง€์ •, ์ €์žฅ๋˜๋Š” ์š”์†Œ์˜ ์ด๋ฆ„์„ x์™€ y๋กœ ์ง€์ •
    • Point ๊ฐ์ฒด ์ƒ์„ฑ
    • p๋ณ€์ˆ˜์— ์ง€์ •๋œ ๊ฐ’ ํ˜ธ์ถœ
      1. ๋ณ€์ˆ˜๋ช…๊ณผ ์š”์†Œ์˜ ์ด๋ฆ„์„ ์ (.)์œผ๋กœ ์—ฐ๊ฒฐ
      2. ์ธ๋ฑ์Šค ์‚ฌ์šฉ; p[0]=x, p[1]=y๊ฐ’