후... 파이썬 기초 공사😩
for i, v in enumerate(['python', 'is', 'so fun']):
print(i, v)
Out:
0 python
1 is
2 so fun
enumerate는 list의 element, 각 요소들을 추출할 때 번호를 붙여서 추출해주는 방식입니다.
for문을 통해 하나씩 추출하였고, index처럼 0번부터 하나씩 매칭해서 값이 나오는 걸 볼 수 있습니다.
mylist = ['python', 'is', 'so', 'fun']
print(list(enumerate(mylist)))
Out:
[(0, 'python'), (1, 'is'), (2, 'so'), (3, 'fun')]
mylist라는 새로운 리스트를 만들어주고, mylist에 먼저 enumerate를 해주고 또 list 안에 담았다.
이렇게 하는 경우는 list에 있는 index와 값을 unpacking하여 list로 저장해주는 방식이다.
unpacking이란 변수에서 여러 개의 값을 꺼내오는 것을 의미한다고 한다!
패킹 : 하나의 변수에 여러 개의 값을 넣는 것
언패킹 : 패킹된 변수에서 여러 개의 값을 꺼내오는 것
print({i:j for i, j in enumerate('Python is so fun and easy'.split())})
Out:
{0: 'Python', 1: 'is', 2: 'so', 3: 'fun', 4: 'and', 5: 'easy'}
위처럼 코드를 쓸 경우 dict로 나온다.
{ } 안에 넣어준 코드를 살펴보면
i:j for i, j in enumerate('Python is so fun and easy'.split())
해당 코드이다.
'Python ~ easy'
라는 문자열을 split하여 공백 기준으로 나눠주고, 그 단어들을 enumerate를 통해 dict 구조로 unpacking 하였다.
후 숨찬다...
여기까지 enumerate의 활용을 알아보았다.
그 다음은 집🏠 ~~~
zip의 경우 두 개의 list의 값을 병렬적으로 추출하는 함수이다.
a = ['a', 'b', 'c']
b = ['d', 'e', 'f']
for i, j in zip(a,b):
print(i, j)
Out:
a d
b e
c f
위의 코드를 살펴보면
a 리스트와 b 리스트가 존재하고 for문에 zip 함수를 사용하여 a와 b의 리스트를 하나씩 1:1 매칭하여 출력한 것 같다.
list 값을 병렬적으로 추출하였다!
a,b,c = zip((1,2,3), (10,20,30), (100,200,300))
print(a,b,c)
Out:
(1, 10, 100) (2, 20, 200) (3, 30, 300)
a, b, c에 zip을 사용하여 각 tuple에서 같은 index 끼리 뭉치게 되었다.
0
번째 인덱스인 1, 10, 100
, 1
번째 인덱스인 2, 20, 200
... 이 묶이는 구조.
그러면 각 tuple을 같은 index끼리 묶어 합을 list로 변환을 해보려고 한다.
print([sum(x) for x in zip((1,2,3), (10,20,30), (100,200,300))])
Out:
[111, 222, 333]
각 tuple의 같은 인덱스끼리의 합이 sum 함수를 통해 계산되어 리스트에 담겼다.
[(1+10+100)
, (2+20+200)
, (3+30+300)
]
이렇게 이해하면 된다!
이번엔 enumerate와 zip을 한 꺼번에 사용하는 코드인듯 하다.
a = ['a', 'b', 'c']
b = ['d', 'e', 'f']
for i, (j, v) in enumerate(zip(a,b)):
print(i, j, v) # index a[index] b[index] 표시
Out:
0 a d
1 b e
2 c f
해당 코드는 괄호 안에꺼부터 먼저 보면!
zip을 통해 a, b 의 리스트가 같은 인덱스끼리 a d
, b e
, c f
이렇게 합쳐졌고,
enumerate를 통해 0, 1, 2의 index가 붙어 차례대로 출력되었다!👍
항상 볼 때마다 헷갈리는 zip
과 enumerate
를 한 번 더 보고 정리해서 좋았던 시간!
파이팅!
무료 강의입니다! 강추!