본문 바로가기
my_lesson/_Python

Python Enumerate & Zip

by boolean 2018. 9. 26.
728x90

Python Enumerate & Zip

Enumerate

열거, 시퀀스형 자료형을 index를 붙여 처례로 열거

>>> alist = ['a1', 'a2', 'a3']

>>> blist = ['b1', 'b2', 'b3']

>>> alist

['a1', 'a2', 'a3']

>>> blist

['b1', 'b2', 'b3']


#  리스트에 있는 index와 값을 unpacking

>>> for i, v in enumerate(alist):

...    print(i, v)

... 

0 a1

1 a2

2 a3


# list의 있는 index와 값을 unpacking하여 list로 저잠

>>> list(enumerate(alist))
[(0, 'a1'), (1, 'a2'), (2, 'a3')]

#  문잠을 list로 만들고 list 의 index와 값을 unpacking  하여 dict타입으로 저장
mystring = 'hello my first split of dicttype'
>>> mystring
'hello my first split of dicttype'
>>> {i:j for i, j in enumerate(mystring.split())}
{0: 'hello', 1: 'my', 2: 'first', 3: 'split', 4: 'of', 5: 'dicttype'}



Zip


묶음, 두 개 이상 시퀀스형 자료형을 index를 기준으로 묶음


#병렬적으로 값을 추출

>>> for a, b in zip(alist, blist):

...    print(a, b)

... 

a1 b1

a2 b2

a3 b3


#각 tuple의 같은 index 끼라 묶음

>>> a, b, c = zip(alist, blist)

>>> a

('a1', 'b1')

>>> b

('a2', 'b2')

>>> c

('a3', 'b3')


#각 tuple의 같은 index를 묶어 합을 list로 변환

>>> anumber = (1, 2, 3)

>>> bnumber = (10, 20, 30)

>>> cnumber = (100, 200, 300)

>>> [x for x in zip(anumber, bnumber, cnumber)]

[(1, 10, 100), (2, 20, 200), (3, 30, 300)]

>>> [sum(x) for x in zip(anumber, bnumber, cnumber)]

[111, 222, 333]


Enumerate & Zip 응용

>>> alist
['a1', 'a2', 'a3']
>>> blist
['b1', 'b2', 'b3']
>>> for i, (a, b) in enumerate(zip(alist, blist)):
...    print(i, a, b)
... 
0 a1 b1
1 a2 b2
2 a3 b3

>>> [[i, x] for i, x in enumerate(zip(alist, blist))]
[[0, ('a1', 'b1')], [1, ('a2', 'b2')], [2, ('a3', 'b3')]]
>>> [[i, a, b] for i, (a, b) in enumerate(zip(alist, blist))]
[[0, 'a1', 'b1'], [1, 'a2', 'b2'], [2, 'a3', 'b3']]
>>> [{i, a, b} for i, (a, b) in enumerate(zip(alist, blist))]
[{0, 'b1', 'a1'}, {1, 'a2', 'b2'}, {'b3', 2, 'a3'}]
>>> [{i:(a, b)} for i, (a, b) in enumerate(zip(alist, blist))]
[{0: ('a1', 'b1')}, {1: ('a2', 'b2')}, {2: ('a3', 'b3')}]
>>> [{i:x} for i, x in enumerate(zip(alist, blist))]
[{0: ('a1', 'b1')}, {1: ('a2', 'b2')}, {2: ('a3', 'b3')}]




댓글