week1-1
ํ์ต ๋ด์ฉ
1. [์๋ฃ๊ตฌ์กฐ] Hash
2. enumerate ํจ์
3. accumalate ํจ์
4. counter ํจ์
1. [์๋ฃ๊ตฌ์กฐ] Hash
Python์์ Hash ์๋ฃ๊ตฌ์กฐ๋ ๋์ ๋๋ฆฌ(Dictionary)๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋์ ๋๋ฆฌ๋ key-value๊ฐ์ ์์ผ๋ก ๊ฐ๋๋ค.
key๊ฐ์ ์๋ฃํ์ด ๋ฌ๋ผ๋ ๊ณต์กดํ ์ ์๋ค.
key๊ฐ๋ง ์๊ณ ์๋ค๋ฉด ์ธ์ ๋ ์ง value์ ์ ๊ทผํ ์ ์๋ค.
๋ค์ ์์๋ก ์์ธํ ์์๋ณด์
- ์กฐํ
- ์ ๋ ฅ
- ์ญ์
<์กฐํ>
1) get ํจ์
dic = {"BTS": "๋ฐฉํ์๋
๋จ", "๋น๋ฐ๋ฒํธ": 4313}
print(dic.get("๋น๋ฐ๋ฒํธ"))
#4313
2) []
dic = {"BTS": "๋ฐฉํ์๋
๋จ", "๋น๋ฐ๋ฒํธ": 4313}
print(dic["๋ฐฉํ์๋
๋จ"])
#{"BTS": "๋ฐฉํ์๋
๋จ", "๋น๋ฐ๋ฒํธ": 4313}
3) in
dic = {"BTS": "๋ฐฉํ์๋
๋จ", "๋น๋ฐ๋ฒํธ": 4313}
if "BTS" in dic:
print('BTS๋ผ๋ key๊ฐ์ ์กด์ฌํฉ๋๋ค')
#BTS๋ผ๋ key๊ฐ์ ์กด์ฌํฉ๋๋ค
<์ ๋ ฅ>
1) dict()
dict = dict( alice = 5, bob = 20, tony= 15, suzy = 30)
#dic = {'alice': 5, 'bob': 20, 'tony': 15, 'suzy': 30}
2) {}
dic = {100: "๋ฐฑ", "์ฒด๋ฆฌ": "๊ณผ์ผ"}
#dic = {100: "๋ฐฑ", "์ฒด๋ฆฌ": "๊ณผ์ผ"}
3) []
dic = dict( alice = 5, bob = 20, tony= 15, suzy = 30)
dict['alice'] = 10
#dic = {'alice': 10, 'bob': 20, 'tony': 15, 'suzy': 30}
<์ญ์ >
1) del
dic = dict( alice = 5, bob = 20, tony= 15, suzy = 30)
del dict['bob']
#dic = {'alice': 5, 'tony': 15, 'suzy': 30}
Hash๋ List์ ๋นํด ์๊ฐ๋ณต์ก๋๊ฐ ํจ์ฌ ๋ฎ๊ธฐ ๋๋ฌธ์
์กฐํ, ์ฝ์ , ์ญ์ ๋ฑ์์ ์ ๋ฆฌํ๋ค
๋ํ key ๊ฐ์ด ๊ฒน์น ๋ value ๊ฐ์ ์กฐ์ ํ์ฌ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
2. enumerate ํจ์
for๋ฌธ์ ๋ ๋ ๋ค๋ฅธ ์ธ์ด๋ค์ ๋น๊ตํ์ฌ Python์ค๋ฝ๊ฒ(?) ํด์ฃผ๋ ๋ด์ฅํจ์์ด๋ค.
๋จผ์ ๋ค๋ฅธ ์ธ์ด๋ค์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์
alist = ['a', 'b', 'c', 'd']
for i in range(len(alist)):
print(i, alist[i])
#0 a
#1 b
#2 c
#3 d
๋ค์์ enumerate๋ฅผ ์ฌ์ฉํ for๋ฌธ์ด๋ค
enumerate ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์คํธ์ ์์์ ๋ฐ์ดํฐ๊ฐ์ ๊ฐ์ด ๋ฐ์์์ ์ฌ์ฉํ ์ ์๋ค
alist = ['a', 'b', 'c', 'd']
for i, n in enumerate(alist):
print(i, n)
#0 a
#1 b
#2 c
#3 d
start ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๊ฐ๋ ์ค์ ํ ์ ์๋ค.
alist = ['a', 'b', 'c', 'd']
for i, n in enumerate(alist, start=101):
print(i, n)
#101 a
#102 b
#103 c
#104 d
3. accumalate ํจ์
๋ค๋ฅธ ์ฌ๋์ด ์์ฑํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ฉด์ ์๊ฒ ๋ ํจ์์ด๋ค.
itertools ๋ชจ๋์์ ์๋ ํจ์๋ก, import ํด์ฃผ์ด์ผ ์ฌ์ฉํ ์ ์๋ค.
๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ๋ฉฐ ๋ํด๋๊ฐ๋ ํจ์์ ๋๋ค.
์ฝ๋์ ํจ๊ป ๋ณด๊ฒ ์ต๋๋ค.
from itertools import accumulate
alist = [1, 2, 3, 4, 5, 6, 7, 8, 9]
blist = list(accumulate(alist))
print(blist)
#[1, 3, 6, 10, 15, 21, 28, 36, 45]
4. Counter ํจ์
Counter๋ collections ๋ชจ๋์ ํด๋์ค์ ๋๋ค.
(๋๋ฌธ์ C ์ฃผ์!)
๋ฆฌ์คํธ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ key๊ฐ์ผ๋ก, ๊ฐ ๊ฐ์๋ฅผ ์ธ์ด์ค๋๋ค
๋ฐฑ๋ฌธ์ด๋ถ์ฌ์ผ๊ฒฌ, ๋ฐ๋ก ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
from collections import Counter
alist = ["hi", "hey", "hi", "hi", "hello", "hey"]
print(Counter(alist))
#Counter({'hi': 3, 'hey': 2, 'hello': 1})
์๋ ๊ฒ ๋ฌธ์์ด๋ ๊ฐ๋ฅํฉ๋๋ค
from collections import Counter
alist = 'hello world'
print(Counter(alist))
#Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
์ด์ ์ฐ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ Counter๋ฅผ ํ์ฉํด๋ณด๊ฒ ์ต๋๋ค!
Counter ๊ฐ์ฒด๋ฅผ ๋นผ๊ฑฐ๋ ๋ํ ์ ์์ต๋๋ค
from collections import Counter
co1 = Counter(["A", "A", "B"])
co2 = Counter(["A", "B", "B"])
print(co1 - co2)
#Counter({'A': 1})
co1 = Counter(["A", "A", "B"])
co2 = Counter(["A", "B", "B"])
print(co1 + co2)
#Counter({'A': 3, 'B': 3})
<์ฐธ๊ณ ์ฌ์ดํธ>
https://yunaaaas.tistory.com/46
https://www.daleseo.com/python-collections-counter/
https://deok2kim.tistory.com/95
https://www.daleseo.com/python-enumerate/