일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- timestamp
- ceil
- lower_case_table_names
- FOREIGN KEY
- SUM
- BOJ
- 세그먼트 트리
- 파이썬
- 리스트 컴프리헨션
- enumerate
- convention
- itertools
- 자료구조
- 외래키
- datetime
- 딕셔너리
- list comprehension
- Dictionary
- floor
- mysql
- Codeforces
- 네이밍
- flask
- 소수
- project euler
- 큰 수 나누기
- 에라토스테네스의 체
- python
- SUM()
- 2557
Archives
- Today
- Total
늒네 기록
[python] zip() 함수에 대하여 본문
서로 다른 두 리스트로 작업을 하다가, 둘을 같은 순서에 있는 아이템끼리 묶어서 쓸 일이 있을때 사용하는 것이 바로 zip() 함수다. 예를 들어, 아래와 같은 상황이 주어져있다고 하자.
1
2
3
4
5
6
7
8
9
|
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['foo', 'bar', 'baz']
x = []
for i in range(len(a)):
x.append((a[i], b[i], c[i]))
# x = [(1, 'a', 'foo'), (2, 'b', 'bar'), (3, 'c', 'baz')]
|
cs |
이때, 6번째 줄의 for문을 돌면서 x에 a, b, c에 들어있는 아이템을 순서대로 묶어서 넣어주었는데, 이 작업을 편하게 해주는 것이 바로 zip()함수이다.
1
2
3
4
5
6
7
8
|
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['foo', 'bar', 'baz']
y = zip(a, b, c)
print(y) # <zip object at 0x00D47E88>
print(list(y)) # [(1, 'a', 'foo'), (2, 'b', 'bar'), (3, 'c', 'baz')]
|
cs |
zip 함수에는 iterable한 오브젝트를 여럿 넣어주면 각 오브젝트에서 아이템을 꺼내서 순서대로 묶어준다. 예를 들어서, 이런 것도 가능하다.
1
2
3
4
|
l = [range(0,i*5,i) for i in range(1,5)]
print(l) # [range(0, 5), range(0, 10, 2), range(0, 15, 3), range(0, 20, 4)]
print(list(zip(*l))) # [(0, 0, 0, 0), (1, 2, 3, 4), (2, 4, 6, 8), (3, 6, 9, 12), (4, 8, 12, 16)]
|
cs |
여기서 l이라는 리스트에 iterable한 객체가 여럿 들어있는데, 이 객체들을 한 번에 zip에 전달하기 위해서 *l로 l의 내용물만 전달한 것을 볼 수 있다.
그렇다면, 만약 zip에 전달한 객체들이 들고 있는 아이템 개수가 서로 다르면 어떻게 될까?
1
2
3
4
5
6
7
8
|
a = [1, 2, 3, 4]
b = ['a', 'b', 'c', 'd', 'e']
c = ['foo', 'bar', 'baz']
y = zip(a, b, c)
print(y) # <zip object at 0x00D47E88>
print(list(y)) # [(1, 'a', 'foo'), (2, 'b', 'bar'), (3, 'c', 'baz')]
|
cs |
위의 예시를 보면, a, b, c중 더 적은 아이템을 들고 있는 객체에 맞춰 zip을 해주는 것을 확인할 수 있다.
반응형
'언어 공부 기록 > python' 카테고리의 다른 글
[python] zip() 함수에 대하여 - 2 (0) | 2020.10.09 |
---|---|
[python] unzip()함수는 없을까? (0) | 2020.10.09 |
[python] lambda와 reduce의 활용을 통한 리스트 아이템의 곱 구하기 (0) | 2020.10.01 |
[python] product, permutations, combinations 함수에 대하여 (0) | 2020.10.01 |
[python] eval()함수에 대하여 (0) | 2020.09.30 |
Comments