[플레이데이터 빅데이터 부트캠프]Python Enumerate & Zip

Enumerate 함수

  • Enumerate는 '열거하다'라는 의미이다.
  • 리스트의 요소를 추출할 때 번호를 붙여서 추출해 준다.
# enumerate(변수명)
for a in enumerate(['사과', '바나나', '딸기']):
    print(a)
(0, '사과')
(1, '바나나')
(2, '딸기')

list(enumerate(fruits))
[(0, '사과'), (1, '바나나'), (2, '딸기')]

 

리스트 요소와 번호를 각각 출력하고 싶으면 아래와 같은 방식을 사용할 수 있다.

# enumerate(변수명)
for i, a in enumerate(['사과', '바나나', '딸기']):
    print(i, a)
0 사과
1 바나나
2 딸기

예제1) 인덱스 번호가 홀수 번인 요소를 출력해 보자.

for i, a in enumerate(fruits):
    if i%2 == 1:
        print(i, a)
1 바나나
3 포도

 

list comprehension으로 출력할 수 있다.

[(i, a) for (i, a) in enumerate(fruits) if i%2 == 1]
[(1, '바나나'), (3, '포도')]

Zip 함수

  • 두 개 이상의 리스트를 병력적으로 추출할 때 사용한다.

사용 방법

zip(list, list)
alist = ['사과', '바나나', '딸기']
blist = ['Apple', 'Banana', 'Strawberry']
list(zip(alist, blist))
[('사과', 'Apple'), ('바나나', 'Banana'), ('딸기', 'Strawberry')]

 

zip함수를 사용해서 두 개의 리스트를 딕셔너리 형태로 만들 수 있다.

alist = ['사과', '바나나', '딸기']
blist = ['Apple', 'Banana', 'Strawberry']
fruits = dict(zip(alist, blist))
fruits
{'딸기': 'Strawberry', '바나나': 'Banana', '사과': 'Apple'}

예제1) (1, 2, 3), (10, 20, 30), (100, 200 ,300) 함수형 문법 사용해서 [111, 222, 333] 출력되도록 만들어 보자.

[sum(x) for x in zip((1,2,3), (10, 20, 30), (100, 200, 300))]
[111, 222, 333]