์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿฅš/๊ฐœ๋…

[ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ] 3. ์ปฌ๋ž™์…˜ Collections

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 1. 8. 08:08
728x90

์ปฌ๋ž™์…˜

 

* ์ด ๊ธ€์€ ๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ ์ฝ”์Šค์˜ ์ธ๊ณต์ง€๋Šฅ(AI) ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

 

์ปฌ๋ž™์…˜ ๋ชจ๋“ˆ์ด๋ž€?

๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋”•์…”๋„ˆ๋ฆฌ์— ๋Œ€ํ•œ ํŒŒ์ด์ฌ ๋นŒ๋“œ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ,

ํŽธ์˜์„ฑ, ์‹คํ–‰ํšจ์œจ์„ ์ œ๊ณต

 

1) import deque

- ์Šคํƒ๊ณผ ํ๋ฅผ ์ง€์›

- doubled ended queue๋กœ ์–‘๋ฐฉํ–ฅ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋จ

- ์ผ๋ฐ˜ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๊ธธ์ด 100๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ ๊ธฐ์ค€ 3๋ฐฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ฆ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from collections import deque
 
#๋””ํ ๋ชจ๋“ˆ์˜ ๋””ํ ํด๋ž˜์Šค ๊ฐ์ฒด ์„ ์–ธ
queue_two = deque()
 
#์„ ์–ธ ๋œ ํ ๊ฐ์ฒด์— ํ•˜๋‚˜์˜ ์š”์†Œ ์ž…๋ ฅ
##์ผ๋ฐ˜
queue_two.append(element)
##์™ผ์ชฝ์— ์š”์†Œ ์ž…๋ ฅ
queue_two.appendleft(element)
##์ค‘๊ฐ„(list_index)์— ์š”์†Œ ์ž…๋ ฅ
queue_two.insert(list_index, element)
#์„ ์–ธ ๋œ ํ ๊ฐ์ฒด์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์†Œ ์ž…๋ ฅ
##์ผ๋ฐ˜
queue_two.extend([element_list])
##์™ผ์ชฝ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์†Œ ์ž…๋ ฅ
queue_two.extendleft([element_list])
 
#์„ ์–ธ ๋œ ํ ๊ฐ์ฒด์—์„œ ์š”์†Œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด๊ธฐ
##์ผ๋ฐ˜
print(queue_two.popleft())
##์˜ค๋ฅธ์ชฝ
print(queue_two.pop())
cs

 

 

2) import Counter

- ํ•ด๋‹น  ๋ชจ๋“ˆ์€ ๊ธฐ์–ตํ•ด๋‘๊ธฐ

- Sequence type์˜ data element๋“ค์˜ ๊ฐฏ์ˆ˜๋ฅผ dict ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜

1
2
3
4
5
6
7
8
9
import collections import Counter
 
#์นด์šดํ„ฐ ๋ชจ๋“ˆ์˜ ์นด์šดํ„ฐ ํด๋ž˜์Šค ๊ฐ์ฒด ์„ ์–ธ
c=Counter()
 
#์นด์šดํ„ฐ ๋ชจ๋“ˆ์˜ ์นด์šดํ„ฐ ํด๋ž˜์Šค ๊ฐ์ฒด ์„ ์–ธ
c=Counter('string')
 
print(c) #Counter({'s':1, 't':1, 'r':1, 'i':1, 'n':1, 'g':1})
cs

 

- counter -> list

1
2
3
4
5
6
7
import collections import Counter
 
#์นด์šดํ„ฐ ๋ชจ๋“ˆ์˜ ์นด์šดํ„ฐ ํด๋ž˜์Šค ๊ฐ์ฒด ์„ ์–ธ
c=Counter(cats=4, dogs=4)
 
print(list(c.elements())) 
##['cats', 'cats', 'cats', 'cats', 'dogs', 'dogs', 'dogs', 'dogs']
cs

 

- ์ง‘ํ•ฉ์—ฐ์‚ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    +, -

    | &

 

3) import OrderedDict

- ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ dict ๋ฐ˜ํ™˜ -> python 3.6๋ถ€ํ„ฐ๋Š” ์ด ๊ธฐ๋Šฅ์ด ๋ณด์žฅ๋จ

 

 

4) import defaultdict

- ์‹ ๊ทœ๊ฐ’ ์ƒ์„ฑ์‹œ ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •

1
2
3
4
5
6
7
8
9
10
from collections import defalutdict
 
#defaultdict ๋ชจ๋“ˆ์˜ defaultdict ํด๋ž˜์Šค ๊ฐ์ฒด ์„ ์–ธ
d=defaultdict(object)
 
#์„ ์–ธ ๋œ defaultdict ๊ฐ์ฒด์— ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๊ธฐ๋ณธ๊ฐ’ ์ง€์ •
d=defaultdict(lambda : 0)
 
#๋”•์…”๋„ˆ๋ฆฌ ๊ฐ์ฒด์— ํ•ด๋‹น ํ‚ค๊ฐ’์ด ์—†์–ด๋„ ์˜ค๋ฅ˜๋ฅผ ๋‚ด์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ €์žฅ
print(d["first"])
cs

 

์˜ˆ์ œ) ํ•˜๋‚˜์˜ ์ง€๋ฌธ์— ๊ฐ ๋‹จ์–ด๋“ค์ด ๋ช‡๊ฐœ๋‚˜ ์žˆ๋Š”์ง€ ์„ธ์–ด๋ณด์ž.

# text๋Š” string์œผ๋กœ ์ฃผ์–ด์งˆ๋•Œ
from collections import OrderedDict
d=defaultdict(lambda : 0)
for word in text.split():
	d[word]+=1

 

 

5) import namedtuple

- ํ™œ์šฉ : ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ

            ์ฃผ๋กœ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜์–ด ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€

- ํŠน์ด์‚ฌํ•ญ : ๊ฐ’์˜ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

- Tuple ํ˜•ํƒœ๋กœ Data ๊ตฌ์กฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

- ์ €์žฅ๋˜๋Š” data์˜ variable์„ ์‚ฌ์ „์— ์ง€์ •ํ•ด์„œ ๋ณ€๊ฒฝ์„ ์ฐจ๋‹จ

1
2
3
4
5
6
7
8
9
10
11
from collections import namedtuple
 
#namedtuple ๋ชจ๋“ˆ์˜ namedtuple ํด๋ž˜์Šค ๊ฐ์ฒด ์„ ์–ธ
#๊ตฌ์กฐ์ œ๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐ
Point=namedtuple('Point', ['x''y']) 
 
p=Point(11, y=22)
 
#๊ฐ’ ํ• ๋‹น
x, y=p
x, y=p.x, p.y
cs
728x90