enumerateํจ์
1) ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๋ ๋ฆฌ์คํธ์ ์์๊ฐ, ์ฆ ์ธ๋ฑ์ค์ ์ ๋ณด๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. enumerateํจ์๋ ๋ฆฌ์คํธ์ ์์์ ์์๊ฐ์ ๋ถ์ฌํด์ฃผ๋ ํจ์์ ๋๋ค. ์ฌ์ฉ ์์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
>>> item = ["First", "Second", "Third"]
>>> data = enumerate(item)
>>> print(data, type(data))
<class 'enumerate'>
2) enumerateํจ์๋ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค ๊ฐ์ ํฌํจํ๋ enumerate ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํด์ค๋๋ค.
>>> item = ["First", "Second", "Third"]
>>> for val in enumerate(item):
... print(val)
(0, 'First')
(1, 'Second')
(2, 'Third')
โ๏ธ3) enumerateํจ์๋ฅผ ์ฌ์ฉํ์ฌ for๋ฌธ์ ๋๋ ค๋ณด๋ฉด ๋ฆฌ์คํธ์ ์์์ ์ธ๋ฑ์ค๊ฐ ํํํํ๋ก ๋ด๊ฒจ์์ต๋๋ค. ๊ฐ๊ฐ์ ์ถ๋ ฅํด๋ด
์๋ค.
>>> item = ["First", "Second", "Third"]
>>> for i, val in enumerate(item):
... print("{} ๋ฒ์จฐ ๊ฐ์ {}์
๋๋ค".format(i, val))
0 ๋ฒ์จฐ ๊ฐ์ First์
๋๋ค
1 ๋ฒ์จฐ ๊ฐ์ Second์
๋๋ค
2 ๋ฒ์จฐ ๊ฐ์ Third์
๋๋ค
์ ์ฒ๋ผ enumerateํจ์๋ for๋ฌธ๊ณผ ํจ๊ป ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
# ์ง์ ์ฒ๋ณธ ์ฝ๋
item = ["First", "Second", "Thrid"]
for i, val in enumerate(item):
print(f"{i} ๋ฒ์งธ ๊ฐ์ {val} ์
๋๋ค")
enumerate() ํจ์
๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผ ์ข ๋ ํ์ด์ฌ๋ต๊ฒ ์ธ๋ฑ์ค(index)์ ์์๋ฅผ ๋์์ ์ ๊ทผํ๋ฉด์ ๋ฃจํ๋ฅผ ๋๋ฆด ์๊ฐ ์์๊น์? ๐
๋ฐ๋ก ํ์ด์ฌ์ ๋ด์ฅ ํจ์์ธ enumerate()๋ฅผ ์ด์ฉํ๋ฉด ๋๋๋ฐ์. for ๋ฌธ์ in ๋ท ๋ถ๋ถ์ enumerate() ํจ์๋ก ํ ๋ฒ ๊ฐ์ธ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
>>> for entry in enumerate(['A', 'B', 'C']):
... print(entry)
...
(0, 'A')
(1, 'B')
(2, 'C')
โ๏ธenumerate() ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ฑ์ค์ ์์๋ก ์ด๋ฃจ์ด์ง ํํ(tuple)์ ๋ง๋ค์ด์ค๋๋ค. ๋ฐ๋ผ์ ์ธ๋ฑ์ค์ ์์๋ฅผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๊ณ ์ถ๋ค๋ฉด ์ธ์ ํ๊ธฐ(unpacking)๋ฅผ ํด์ค์ผ ํฉ๋๋ค.
>>> for i, letter in enumerate(['A', 'B', 'C']):
... print(i, letter)
...
0 A
1 B
2 C
โ๏ธ ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ !!
์์ ์๋ ๊ฒ์ฒ๋ผ for i, letter in enumerate(๋ฆฌ์คํธ) ์ ์๋ ๊ฒ์ฒ๋ผ ๊ผญ!!
for i, letter์ ๊ฐ์ด i, ๊ฐ๊ณผ ๊ฐ์ ํํ๋ก ์ฐ๋๋ก ํฉ๋๋ค !!
๊ทธ๋ ๊ฒ ํด์ผ { } ๋์ ๋๋ฆฌ ์์์ ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ ํ๋ i๊ฐ๊ณผ letter๊ฐ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค
๋ง์ฝ ๊ทธ๋ ๊ฒ ํ์ง ์์ ์ ์ค๋ฅ๊ฐ ๋ ์๋ ์์ผ๋ฏ๋ก ์ฃผ์ํ์ธ์ !!
players = ["mumu", "soe", "poe", "kai", "mine"]
print(players)
print()
pla_dic = {key: i for i, key in enumerate(players)}
print(pla_dic)
print()
pla_dic3 = {i: key for i, key in enumerate(players)}
print(pla_dic3)
print()
# ๊ฒฐ๊ณผ๊ฐ
['mumu', 'soe', 'poe', 'kai', 'mine']
{'mumu': 0, 'soe': 1, 'poe': 2, 'kai': 3, 'mine': 4}
{0: 'mumu', 1: 'soe', 2: 'poe', 3: 'kai', 4: 'mine'}
์์ ์ธ๋ฑ์ค ๋ณ๊ฒฝ
๋ฃจํ๋ฅผ ๋๋ฆฌ๋ค๋ณด๋ฉด ์ธ๋ฑ์ค๋ฅผ 0์ด ์๋๋ผ, 1๋ก ์์ํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ์ด๋ด ๋๋ enumerate() ํจ์๋ฅผ ํธ์ถํ ๋ start ์ธ์์ ์์ํ๊ณ ์ถ์ ์ซ์๋ฅผ ๋๊ธฐ๋ฉด ๋ฉ๋๋ค.
>>> for i, letter in enumerate(['A', 'B', 'C'], start=1):
... print(i, letter)
...
1 A
2 B
3 C
>>> for i, letter in enumerate(['A', 'B', 'C'], start=101):
... print(i, letter)
...
101 A
102 B
103 C
players = ["mumu", "soe", "poe", "kai", "mine"]
print(players)
print()
dic1 = {val:i for i,val in enumerate(players, start=1)}
print(dic1)
enumerate() ์๋ฆฌ
์ง๊ธ๊น์ง for ๋ฌธ์์ enumerate() ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ดค๋๋ฐ์. enumerate() ํจ์ ์์ฒด๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ข ๋ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ด์ฌ์์ for ๋ฌธ์ ๋ด๋ถ์ ์ผ๋ก in ๋ค์ ์ค๋ ๋ชฉ๋ก์ ๋์์ผ๋ก ๊ณ์ํด์ next() ํจ์๋ฅผ ํธ์ถํ๊ณ ์๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ์ผ๋ฐ ๋ฆฌ์คํธ๋ฅผ iter() ํจ์์ ๋๊ฒจ ๋ฐ๋ณต์(iterator)๋ก ๋ง๋ ํ next() ํจ์๋ฅผ ํธ์ถํด๋ณด๋ฉด ์์๋ค์ด ์ฐจ๋ก๋ก ์ป์ด์ง๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
>>> iter_letters = iter(['A', 'B', 'C'])
>>> next(iter_letters)
'A'
>>> next(iter_letters)
'B'
>>> next(iter_letters)
'C'
์ด ๋ฒ์๋ enumerate() ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋์์ผ๋ก next() ํจ์๋ฅผ ๊ณ์ํด์ ํธ์ถํด๋ณด๋ฉด, ์ธ๋ฑ์ค์ ์์์ ์์ด ํํ(tuple)์ ํํ๋ก ์ฐจ๋ก๋ก ์ป์ด์ง๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
>>> enumerate_letters = enumerate(['A', 'B', 'C'])
>>> next(enumerate_letters)
(0, 'A')
>>> next(enumerate_letters)
(1, 'B')
>>> next(enumerate_letters)
(2, 'C')
๊ฒฐ๊ตญ, enumerate() ํจ์๋ ์ธ์๋ก ๋์ด์จ ๋ชฉ๋ก์ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค์ ์์๋ฅผ ์ฐจ๋ก๋๋ก ์ ๊ทผํ๊ฒ ํด์ฃผ๋ ๋ฐ๋ณต์(iterator) ๊ฐ์ฒด๋ฅผ ๋ฐํํด์ฃผ๋ ํจ์์ ๋๋ค. ์ด ๋ถ๋ถ์ enumerate() ํจ์์ ๋ฐํ ๊ฐ์ ๋ฆฌ์คํธ๋ก ๋ณํํด๋ณด๋ฉด ์ข ๋ ๋ช ํํ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
>>> list(enumerate(['A', 'B', 'C']))
[(0, 'A'), (1, 'B'), (2, 'C')]
[ํ] 2์ฐจ์ ๋ฆฌ์คํธ ๋ฃจํ
์ด์ enumerate() ํจ์์ ์๋ ์๋ฆฌ๊น์ง ๋ฐฐ์ ์ผ๋ ์ข ๋ ๊ณ ๊ธ ์์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณผ๊น์?
์๋์ ๊ฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ ํํ์ด ๋ด๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃจํ๋ฅผ ๋๋ฉด์ ์ ๊ทผํด์ผํ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค.
>>> matrix = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
์ด ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค์ฒฉ for ๋ฌธ ๋ด์์ ํ๊ณผ ์ด์ ์ธ๋ฑ์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ก ์์ฑ์ ๋ง์ด ํ์ค ๊ฑฐ์์.
>>> for r in range(len(matrix)):
... for c in range(len(matrix[r])):
... print(r, c, matrix[r][c])
...
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
๋์ผํ ์์ ์ ํ๋ ์ฝ๋๋ฅผ enumerate() ํจ์๋ฅผ ์ด์ฉํด์ ์ฌ์์ฑํ๋ฉด ์ด๋จ๊น์?
>>> for r, row in enumerate(matrix):
... for c, letter in enumerate(row):
... print(r, c, letter)
...
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
์ฝ๋๊ฐ ๋ ๊น๋ํ๊ณ ์ฝ๊ธฐ ํธํ์ฃ ?! ๐ค
์์ ์ฝ๋์์๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ๋ง ํ๊ธฐ ๋๋ฌธ์ ํฐ ์ฐจ์ด๋ฅผ ๋ชป ๋๋ ์๋ ์์ง๋ง, ์ค์ ํ๋ก์ ํธ์์ ์ข ๋ ๋ณต์กํ ์์ ์ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ฐจ์ด๊ฐ ๋ ํฌ๊ฒ ๋ ๊ฑฐ์์. ๋ฌด์๋ณด๋ค๋ 2์ฐจ์ ๋ฐฐ์ด์ ๋ค๋ฃฐ ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ๋ฅผ ๋ด๊ธฐ ์ฌ์ด๋ฐ, enumerate() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์ค์๋ฅผ ํ ํ๋ฅ ์ด ํ์ ํ๊ฒ ์ค์ด๋ญ๋๋ค.
'Algorithm๐ค > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python๐ฑ] 1์ฐจ์ ๋ฐฐ์ด ์ ๋ ฅ๋ฐ๊ธฐ (0) | 2023.06.07 |
---|---|
[Python๐ฑ] ๋ฌธ์์ด ๊ฐ๋ (0) | 2023.06.07 |
[์๋ฃ๊ตฌ์กฐ๐ฑ] ๋์ ๋๋ฆฌ (0) | 2023.06.07 |
[Python๐ฑ] ๋ฌธ์์ด ๋น๊ต ์์ ์ผ์น ๋ถ๋ถ ์ผ์น (0) | 2023.06.07 |
[์ฝํ ๋ฌธ๋ฒ] split ๋ฆฌ์คํธ ๐ ๋ฌธ์์ด (0) | 2023.06.01 |