donut

파이썬 Enumerate & zip

Function

 

 

 

파이썬 enumerate

이번포스팅은 이너머레잇입니다.
이 함수는 리스트의 값을 추출할때 인덱스를 같이 추출하는 기능을 제공하죠.

바로 예제를 통해 살펴 보겠습니다.

enumerate_사용 x

In [1]:
test_list = ['one', 'two', 'three','four','five']
for i in test_list:
    print(i)
 
one
two
three
four
five
 

enumerate_사용o

In [2]:
for i,v in enumerate(test_list):
    print(i,v)
 
0 one
1 two
2 three
3 four
4 five
 

enumerate_unpacking

In [3]:
list(enumerate(test_list))
Out[3]:
[(0, 'one'), (1, 'two'), (2, 'three'), (3, 'four'), (4, 'five')]
 

enumerate_컴프리헨션

In [17]:
#문자열을 빈칸으로 스플릿 한 후, enumerate로 인덱스와함께 dict형태로 보내기
{i:j for i,j in enumerate('동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세'.split())}
Out[17]:
{0: '동해물과',
 1: '백두산이',
 2: '마르고',
 3: '닳도록',
 4: '하느님이',
 5: '보우하사',
 6: '우리나라',
 7: '만세'}
In [20]:
#문자열을 '이'로 스플릿 한 후, enumerate로 인덱스와함께 dict형태로 보내기
{i:j for i,j in enumerate('동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세'.split('이'))}
Out[20]:
{0: '동해물과 백두산', 1: ' 마르고 닳도록 하느님', 2: ' 보우하사 우리나라 만세'}
 

zip

이번에는 zip 함수에 대해 살펴 보겠습니다.
enumerate가 리스트에 인덱스를 입히기 위한 함수라면,
zip은 복수의 리스트를 다루기 위한 함수라고 보면됩니다.

역시 예제로 살펴보겠습니다.

zip_예시

In [22]:
test_list1 = ['1','2','3','4','5']
test_list2 = ['가','나','다','라','마']

for i,v in zip(test_list1,test_list2):
    print(i,v)
#리스트 두개를 합칠 수 있습니다.
 
1 가
2 나
3 다
4 라
5 마
In [26]:
test_list1 = ['1','2','3','4','5']
test_list2 = ['가','나','다','라','마']
test_list3 = ['!','@','#','$','%']

for i,v,c in zip(test_list1,test_list2,test_list3):
    print(i,v,c)
#리스트 3개도 역시 합칠 수 있습니다.
 
1 가 !
2 나 @
3 다 #
4 라 $
5 마 %
 

zip_ unpacking

In [40]:
#앞서 사용한 리스트를 활용하여 unpacking하기
a,b,c,d,e = zip(test_list1,test_list2)
print(a)
print(b)
print(c)
print(d)
print(e)
 
('1', '가')
('2', '나')
('3', '다')
('4', '라')
('5', '마')
In [42]:
#앞서 사용한 리스트를 활용하여 unpacking하기
a,b,c,d,e = zip(test_list1,test_list2,test_list3)
print(a)
print(b)
print(c)
print(d)
print(e)
 
('1', '가', '!')
('2', '나', '@')
('3', '다', '#')
('4', '라', '$')
('5', '마', '%')
 

zip _ 컴프리헨션

In [43]:
#컴프리헨션으로 각 튜플 요소들의 합을 구함
[sum(i) for i in zip((1,2,3),(10,20,30),(100,200,300))]
Out[43]:
[111, 222, 333]
 

zip_enumerate 응용

In [33]:
test_list1 = ['1','2','3','4','5']
test_list2 = ['가','나','다','라','마']

for i, (a,b) in enumerate(zip(test_list1,test_list2)):
    print(i,a,b)
 
0 1 가
1 2 나
2 3 다
3 4 라
4 5 마
In [39]:
test_list1 = ['1','2','3','4','5']
test_list2 = ['가','나','다','라','마']
v = a,b
for i, v in enumerate(zip(test_list1,test_list2)):
    print(i,v)
 
0 ('1', '가')
1 ('2', '나')
2 ('3', '다')
3 ('4', '라')
4 ('5', '마')
In [ ]:
 

'Function' 카테고리의 다른 글

파이썬 Collections  (0) 2020.07.09
파이썬 스플릿 & 조인  (0) 2020.07.07
파이썬 함수 lambda(람다)  (1) 2020.07.06
리스트 컴프리헨션  (0) 2020.07.05