ํ์ด์ฌ์์ ๋ง์ด ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ์์๋ด ์๋ค!
01 ์๋ฃ๊ตฌ์กฐ์ ์ดํด
> ์๋ฃ๊ตฌ์กฐ์ ๊ฐ๋
์๋ฃ๊ตฌ์กฐ(data structure) : ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ๊ทธ ๋ฐ์ดํฐ์ ํน์ง์ ๋ฐ๋ผ ์ปดํจํฐ์ ํจ์จ์ ์ผ๋ก ์ ๋ฆฌํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ํํ ๋ฐฉ์
โ ๋ฐ์ดํฐ์ ํน์ง์ ๊ณ ๋ คํ์ฌ, ํน์ง์ด ๋ค๋ฅธ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ์ํ๋ค!

> ํ์ด์ฌ์์์ ์๋ฃ ๊ตฌ์กฐ
ํ์ด์ฌ์์์ ์๋ฃ ๊ตฌ์กฐ์ ์ข ๋ฅ์ ๋ํด ์์๋ด ์๋ค.

02 ์คํ๊ณผ ํ
> ์คํ

์คํ(stack) : Last in First Out(LIFO), ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์ค๋ ํํ๋ก ๋ฐ์ดํฐ์ ์ ์ฅ ๊ณต๊ฐ์ ๊ตฌํํ๋ ๊ฒ

์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ฐํ์ ๊ณต๊ฐ์ ๋ปํจ
๋ฆฌ์คํธ์ ๋น์ทํ์ง๋ง ์ ์ฅ ์์๊ฐ ๋ฐ๋๋ ํํ ; ์คํ ์๋ฃ๊ตฌ์กฐ
- ๊ตฌํ๋ฐฉ์
Push : ์คํ์ ์ ์ฅํ๋ ๊ฒ
Pop : ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ฒ
- pop
>>> 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()
20
>>> a.pop()
10
append๋ก ์ฝ์ ํ ์๋ฅผ pop์ผ๋ก ์ถ์ถ
pop( )ํจ์๋ฅผ ๊ฐ์ฉํ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง์ ์ ์ฅ๋ ๊ฐ์ ์ถ์ถํ๊ณ ๋์์ ๋ฆฌ์คํธ์์ ์ญ์ ์ํด
- ์คํ ํ์ฉํ๊ธฐ - ํ ์คํธ ์ญ์ ์ถ๋ ฅ
word = input("Input a word: ")
world_list = list(word)
print(world_list)
result = [ ]
for _ in range(len(world_list)):
result.append(world_list.pop())
print(result)
print(word[::-l])
์ ๋ ฅ๋ฐ์ ํ ์คํธ๋ word์ ์ ์ฅ๋๊ฑฐ, listํ์ผ๋ก ๋ณํํฉ๋๋ค.
๊ทธ ํ ์ฐจ๋ก๋๋ก ์ถ์ถํ๋ฉด ํ ์คํธ์ ์ญ์๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
โก โ _ โ ํ์ฉ
_ ๊ธฐํธ๋ ์ผ๋ฐ์ ์ผ๋ก for๋ฌธ์์ ๋ง์ด ์ฌ์ฉ๋๋๋ฐ _ ๊ธฐํธ๊ฐ ์์ผ๋ฉด ํด๋น ๋ฐ๋ณต๋ฌธ์์ ์์ฑ๋๋ ๊ฐ์ ์ฝ๋์์ ์ฌ์ฉํ์ง ์๊ฒ ๋ค๋ ๋ป์ด ๋ฉ๋๋ค.
์์ ์ฝ๋์์๋ 6ํ์ range(len(world_list))์์ ์์ฑ๋๋ ๊ฐ์ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ _๋ก ํ ๋น๋ฐ์ ๊ฒ์ ๋๋ค.
> ํ
ํ(queue) : First in First Out(FIFO) ๋ฉ๋ชจ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ์๋ฃ๊ตฌ์กฐ

ex) ์ํ ๋๊ธฐ ๋ฒํธํ - ๋จผ์ ์จ ์ฌ๋์ด ์์ ๋ฒํธํ๋ฅผ ๋ฝ๊ณ , ๋ฒํธ๊ฐ ๋น ๋ฅธ ์ฌ๋์ด ๋จผ์ ์๋น์ค๋ฅผ ๋ฐ๋ ๊ตฌ์กฐ
- ์คํ๊ณผ์ ์ฐจ์ด
์คํ : ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ํ๋ ์ ์ด ๊ณ ์ ๋์ด ์์
ํ : ์ฒ์์ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ฐ์ด ์ฌ์ฉ๋จ์ ๋ฐ๋ผ ๊ณ์ ๋ฐ๋ โ ๊ตฌํ์ด ๋ ๋ณต์ก
- ๊ตฌํ ๋ฐฉ์
pop(0) : pop( )ํจ์๊ฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ผ๋ฉด, pop(0)์ ๋งจ ์ฒ์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค๋ ์๋ฏธ
>>> 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
03 ํํ๊ณผ ์ธํธ
> ํํ
ํํ(tuple) : ๋ฆฌ์คํธ์ ๊ฐ์ ๊ฐ๋ ์ด์ง๋ง ๊ฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๋ฆฌ์คํธ
- ์ ์ธ๊ณผ ์ฌ์ฉ
>>> t = (1, 2, 3)
>>> print(t + t , t * 2)
(1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3)
>>> len(t)
3
1ํ : ํํ ์ ์ธ. ๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ t = (1, 2, 3)๊ณผ ๊ฐ์ ํํ๋ก ์ ์ธํฉ๋๋ค.
2~3ํ : ๋ฆฌ์คํธ์์ ์ฌ์ฉํ๋ ์ฐ์ฐ, ์ธ๋ฑ์ฑ, ์ฌ๋ผ์ด์ฑ์ด ๋ชจ๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค.
- ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ
โํํ์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์

๋งจ ์๋ ์ค๋ฅ ๋ฉ์์ง : โํํ ์ค๋ธ์ ํธ์๋ ์๋ก์ด ์์ดํ ์ ํ ๋น์ ํ์ฉํ์ง ์๋๋ค.โ
โ ํํ์ ๊ฐ์ฅ ํฐ ํน์ง!
- ๊ฐ์ด ํ๋์ธ ํํ ์ ์ธ
t = (1) # ๋ณ์ t ์ ์ธ์ผ๋ก ์ดํด
t = (1, ) # ํํ ์ ์ธ
> ์ธํธ
์ธํธ(set) : ๊ฐ์ ์์ ์์ด ์ ์ฅํ๋ ์ค๋ณต์ ๋ถํํ๋ ์๋ฃํ
โ โ์ค๋ณต์ ๋ถํํ๋โ ๊ธฐ๋ฅ ๋๋ถ์ ํ๋ก๊ทธ๋๋ฐ์์ ์ ์ฉํ๊ฒ ์ฐ์
- ์ ์ธ๊ณผ ์ฌ์ฉ
>>>s = set([1, 2, 3, 1, 2, 3])
>>>s
{1, 2, 3}
์ธํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ set( ) ํจ์๋ฅผ ์ฌ์ฉํ๋ ค ๋ฆฌ์คํธ, ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ์ด ์ธํธ ํํ๋ก ๋ณํ๋ฉ๋๋ค.
์ค๋ณต์ ์ ๊ฑฐํ ํ ์ธํธ๋ก ๋ณํ๋์ด ์ถ๋ ฅ๋ฉ๋๋ค.
- ๊ฐ ์ญ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
[์ค์ต] ์ธํธ๋ ํํ๊ณผ ๋ค๋ฅด๊ฒ ์ญ์ ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํฉ๋๋ค.
>>> s
{1, 2, 3}
>>> s.add(1) # 1์ ์ถ๊ฐํ๋ ๋ช
๋ น์ด์ง๋ง ์ค๋ณต ๋ถํ๋ก ์ถ๊ฐ๋์ง ์์
>>> s
{1, 2, 3}
>>> s.remove(1) # 1 ์ญ์
>>> s
{2, 3}
>>> s.update([1, 4, 5, 6, 7]) # [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()
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([1, 2, 3, 4, 5, 6, ])
{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([1, 2])
{1, 2}
ํฉ์งํฉ : union( ), |
๋ ์งํฉ์ ์ค๋ณต๊ฐ์ ์ ๊ฑฐํ๊ณ ํฉ์น๋ ์ฐ์ฐ
๊ต์งํฉ : intersection( ), &
๋ ์งํฉ ์์ชฝ์ ๋ชจ๋ ํฌํจ๋ ๊ฐ๋ง ์ถ์ถํ๋ ์ฐ์ฐ
์ฐจ์งํฉ: difference( ), -
์์ ์๋ ์งํฉ์ ์์ ์ค์ ๋ค์ ์งํฉ์ ํฌํจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ ์ฐ์ฐ

04 ๋์ ๋๋ฆฌ
> ๋์ ๋๋ฆฌ์ ๊ฐ๋
- ๋์ ๋๋ฆฌ๋ ์์ด์ฌ์ ์์ ๊ฒ์์ ์ํด ์์ด ๋จ์ด๋ค์ ์ ์ฅํด ๋์ ๋ฐฉ์๊ณผ ๋น์ท!
- ์์ด์ฌ์ ์์๋ ๊ฐ ๋จ์ด๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ์์ธ index์ ๋ง๋ค์ด ๋๊ณ ์์ธ์ ํตํด ๊ทธ ๋จ์ด๋ฅผ ์ฐพ์ ์๋ฏธ๋ฅผ ํ์ ํ๋ค. โ ์ด์ ๋ง์ฐฌ๊ฐ์ง
- ํ์ด์ฌ์ ๋์ ๋๋ฆฌ ๊ตฌ์กฐ์์๋ ๋ฐ์ดํฐ์ ์ ์ผํ ๊ตฌ๋ถ์์ธ ํค key๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฒ์ํ ์ ์๊ฒ ํ๋ค
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐvalue ์ด๋ผ๋ ์ด๋ฆ๊ณผ ์์ผ๋ก ์ ์ฅํ์ฌ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ํ๋ค.

>> ํ์ด์ฌ์์์ ๋์ ๋๋ฆฌ
๋์
๋๋ฆฌ ๋ณ์ = { ํค 1:๊ฐ 1, ํค 2:๊ฐ 2, ํค 3:๊ฐ 3, ... }
: ํค ์ ๊ฐ ์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค!
- ํน์ง
- ๊ฐ์๋ ๋ค์ํ ์๋ฃํ์ด ๋ค์ด๊ฐ ์ ์๋ค.
- ๋ฆฌ์คํธ, ํํ, ์ธํธ, ๋์ ๋๋ฆฌ๊น์ง ์ฌ์ฉ ๊ฐ๋ฅ
- ์ ์ธ๊ณผ ์ฌ์ฉ
>>> student_info = {2023111222:'hanni', 2023111333:'jenni', 2023111444:'lily'}
>>> student_info[2022111333]
>>> 'Jenni'
- ํค๋ ๋ฌธ์์ด๋ก ์ ์ธํ ์๋ ์๊ณ , ์ ์ํ์ผ๋ก๋ ์ ์ธํ ์ ์๋ค.
- ํด๋น ํค๋ฅผ ๋๊ดํธ ์์ ๋ฃ์ด ํธ์ถํ ์ ์๋ค.
- ์ ์ํ์ผ๋ก ์ ์ธํ๊ธฐ ๋๋ฌธ์ ์ ์ํ์ผ๋ก ํธ์ถํ๋ค.
- ์ฌํ ๋น๊ณผ ๋ฐ์ดํฐ ์ถ๊ฐ
>>> student_info[2023111222]= 'hanni'
>>> student_info[2023111222]
'hanni'
>>> student_info[2023111555]= 'minji'
>>> student_info
{2023111222: 'hanni', 2023111333:'jenni', 2023111444:'lily', 2022111555:'lily'}}
- ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ ๋นํ๋ฉด ๋๋ค.
> ๋์ ๋๋ฆฌ์ ํจ์
- 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([('America'), ('Korea', 82), ('China', 86), ('Japan', 81), ('German', 49)])
- ๋์ ๋๋ฆฌ์ for๋ฌธ
>>> for k, v in country_code.items():
... print("Key:", k)
... print("Value:", v)
- ๋์ ๋๋ฆฌ์ if๋ฌธ
>>> "Korea" in country_code.keys()
True
>>> 82 in country_code.values()
True
05 collections ๋ชจ๋
> ๋ชจ๋์ ๊ฐ๋
collections ๋ชจ๋ : ํ์ด์ฌ์ ๋ด์ฅ ์๋ฃ๊ตฌ์กฐ
โ ๋ฆฌ์คํธ, ํํ, ๋์ ๋๋ฆฌ ๋ฑ์ ํ์ฅํ์ฌ ์ ์๋ ํ์ด์ฌ์ ๋ด์ฅ ๋ชจ๋
โ ๊ธฐ์กด์ ์๋ฃ๊ตฌ์กฐ๋ณด๋ค ํจ์จ์ ์ด๊ณ ํธ๋ฆฌ
์๋ฃ๊ตฌ์กฐ ํธ์ถ ์ฝ๋
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])
1ํ - import
3ํ - ๋ฆฌ์คํธ์ ๋น์ทํ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
4ํ - append( ) ํจ์๋ฅผ ์ฌ์ฉํด ๊ธฐ์กด ๋ฆฌ์คํธ์ฒ๋ผ ๋ฐ์ดํฐ๊ฐ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋๋ฆฌ๋ฉด์ ์์
[์คํ]
>>> deque_list.pop()
4
>>> deque_list.pop()
3
>>> deque_list.pop()
2
>>> deque_list
deque([0, 1])
deque_list.pop ์ํ ์ ์ค๋ฅธ์ชฝ ์์๋ถํฐ ํ๋์ฉ ์ถ์ถ๋จ
โ ์คํ๊ณผ ๊ฐ์ด ๋ง์ง๋ง์ ๋ฃ์ ๊ฐ์ด ๋จผ์ ์ถ์ถ๋จ
[ํ]
>>> from collections import deque
>>>
>>> deque_list = deque()
>>> for i in range(5)๏ผ
... deque_list.appendleft(i)
>>> print(deque_list)
deque([4, 3, 2, 1, 0])
โ pop(0) ๋์ appendleft( ) ํจ์๋ก ์๋ก์ด ๊ฐ์ ์ผ์ชฝ๋ถํฐ ์ ๋ ฅํ๋๋ก ํ์ฌ ๋จผ์ ๋ค์ด๊ฐ ๊ฐ๋ถํฐ ์ถ๋ ฅ๋ ์ ์๋๋ก ํจ.
-์ฅ์ : ๊ธฐ์กด์ ๋ฆฌ์คํธ์์ ๋น๊ตํ ๋ ๋ช ๊ฐ์ง ์ฅ์ ์ด ์๋ค.
1) ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํน์ฑ ์ง์
์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์์์ ๊ฐ์ ํ ์ชฝ์ผ๋ก ์ฐ๊ฒฐํ ํ, ์์์ ๋ค์ ๊ฐ์ ์ฃผ์๊ฐ์ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฒ


์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ทธ๋ฆผ์ฒ๋ผ ๋ค์ ์์์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ์ํ์ผ๋ก ์ ์ฅํ ์ ์๋ค. ๋ํ, ๋ง์ง๋ง ์์์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ์ฃผ์๋ฅผ ์ ์ฅ์์ผ ํด๋น ๊ฐ์ ์ฐพ์๊ฐ ์ ์๋๋ก ์ฐ๊ฒฐ์ํจ๋ค.
์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ธฐ๋ฅ : rotate( ) ํจ์
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(deqiie_list)
deque([3, 4, 0, 1, 2])
>>> deque_list.rotate(2)
>>> print(deque_list)
deque([1, 2, 3, 4, 0])
rotate(2) ํจ์๋ฅผ ์ํ์ํค๋ฉด ๊ฐ์ด ๋ ์นธ์ฉ ์ด๋ํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
2) ๋ค์ํ ๊ธฐ๋ฅ ์ ๊ณต
- reversed( ) ํจ์ - ๊ธฐ์กด๊ณผ ๋ฐ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ์์์ฝ๋
...
>>>print(deque(reversed(deque_list)))
deque([0, 4, 3, 2, 1])
3) ๊ธฐ์กด์ ๋ฆฌ์คํธ์์ ์ง์ํ๋ ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ
- 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])
4 )๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ฌ์ฉ๊ณผ ๋น ๋ฅธ ์๋
>>OrderedDict ๋ชจ๋
ordered dictionary : ์์๋ฅผ ๊ฐ์ง ๋์ ๋๋ฆฌ
โ ๊ธฐ์กด์ ๋์ ๋๋ฆฌ ํ์ผ์ ์ ์ฅํ๋ฉด ํค๋ ์ ์ฅ ์์์ ์๊ด ์์ด ์ ์ฅ๋๋ค.
โ ํ์ง๋ง OrderedDict ๋ชจ๋์ ํค์ ์์๋ฅผ ๋ณด์ฅ!
[๋ค์ํ ๋ฐฉ๋ฒ๋ค]
- ์ ์ฅํ ์์๋๋ก ํ๋ฉด์ ์ถ๋ ฅ
from collections import OrderedDict # OrderedDict ๋ชจ๋ ์ ์ธ
d = OrderedDict()
d['x'] = 100
d['y'] = 200
d['z'] = 300
d['l'] = 500
for k, v in d.items():
print(k, v)
์ด๋ค ์ปดํจํฐ๋ ์๊ด ์์ด x, y, z, l์ ์์๋๋ก ํค-๊ฐ ์์ด ์ถ๋ ฅ๋๋ค.
- ํค์ ๊ฐ ์ ๋ ฌ ex)ํค๋ฅผ ์ด์ฉํ์ฌ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๋ฅผ ๋ฒํธ์์ผ๋ก ์ ๋ ฌ ํ ์ถ๋ ฅ
def sort_by_key(t):
return t[0]
from collections import OrderedDict # OrderedDict ๋ชจ๋ ์ ์ธ
d = dict()
d['x'] = 100
d['y'] = 200
d['z'] = 300
d['l'] = 500
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( ) ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฌ
๊ทธ๋ฆฌ๊ณ ๋ค์ OrderedDict ๋ชจ๋๋ก ๊ฐ์ธ์ฃผ๋ ๋ฐฉ์
โ ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ์กด์ ๋์ ๋๋ฆฌ๋ ๋ฆฌ์คํธ์ ์์๋ฅผ ์งํค๋ฉด์ ๋์ ๋๋ฆฌ ํํ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
>>defaultdict Counter ๋ชจ๋
defaultdict ๋ชจ๋ : ๋์ ๋๋ฆฌ์ ๋ณ์๋ฅผ ์์ฑํ ๋ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ
โ ์๋ก์ด ํค๋ฅผ ์์ฑํ ๋ ๋ณ๋ค๋ฅธ ์กฐ์น ์์ด ์๋ก์ด ๊ฐ์ ์์ฑํ ์ ์์
- ์ ์ธ๊ณผ ์ฌ์ฉ
d = dict()
print(d["first"])
from collections import defaultdict
d = defaultdict(lambda: 0) # Default ๊ฐ์ ์ค์
print(d["first"])
3ํ d = defaultdict(lambda: 0) : defaultdict ๋ชจ๋์ ์ ์ธํ๋ฉด์ ๋์์ ์ด๊น๊ฐ์ 0์ผ๋ก ์ค์ ํ ๊ฒ
lambda(0) ํจ์ : ์ด๋ค ํค๊ฐ ๋ค์ด์ค๋๋ผ๋ ์ฒ์ ๊ฐ์ ์ ๋ถ 0์ผ๋ก ์ค์ ํ๋ค.
- ์ฅ์ : ์ฝ๋์ ์๋ฅผ ์ค์ผ ์ ์๋ค.
>>Counter ๋ชจ๋
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
>>namedtuple ๋ชจ๋
namedtuple ๋ชจ๋ : ํํ์ ํํ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
โ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ํ๋์ ํํ ํํ๋ก ๊ตฌ์ฑํด ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ
- ์ ์ธ๊ณผ ์ฌ์ฉ
>>> from collections import namedtuple
>>>
>>> Point = namedtuple(Point1, ['x', 'y'])
>>> p = Point(ll, y=22)
>>> p
Point(x=ll, y=22)
>>> p.x, p.y
(11, 22)
>>> print(p[0] + p[l])
33
'๐ ์คํฐ๋ > ํ์ด์ฌ ์คํฐ๋ ๊ฐ์์๋ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2ํ/๊น๊ฐ๋ฆผ, ์ต๋ค์] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ ์๋ฃ๊ตฌ์กฐ (1) | 2023.05.11 |
---|---|
[2ํ/๊น์ธ์ฐ] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (1) | 2023.05.11 |
[3ํ/๊น๊ท๋ฆฌ] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (2) | 2023.05.10 |
[3ํ/๊น๊ฒฝ์] 7์ฃผ์ฐจ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (1) | 2023.05.10 |
[4ํ/๊น๋ฏผํ] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (0) | 2023.05.09 |