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')}]
'my_lesson > _Python' 카테고리의 다른 글
Python Objects in Python(파이썬에서의 객체) (0) | 2018.09.26 |
---|---|
Python 아톰에서 실행방법 & 한글께짐 해결방법 (0) | 2018.09.26 |
Python - Settings Django project debugging & Create model (0) | 2018.08.07 |
Python - Install Python (0) | 2018.06.14 |
Python - Starting guide [from install to hello world] Using Anaconda (0) | 2018.05.26 |
댓글