출처 : 내 블로그 게시물 (더 나은 형식)
예
numbers = [1,2,3]
letters = 'abcd'
zip(numbers, letters)
# [(1, 'a'), (2, 'b'), (3, 'c')]
입력
0 개 이상의 이터 러블 [1] (예 : 목록, 문자열, 튜플, 사전)
출력 (목록)
첫 번째 튜플 = (숫자 element_1, 문자 element_1)
두 번째 튜플 = (e_2 숫자, e_2 문자)
…
n 번째 튜플 = (e_n 숫자, e_n 문자)
- n 튜플 목록 : n은 가장 짧은 인수의 길이입니다 (입력).
- len (numbers) == 3 <len (letters) == 4 → short = 3 → 3 튜플 반환
- 각 튜플의 길이 = 인수 수 (튜플은 각 인수에서 요소를 가져옵니다)
- 인수 = (숫자, 문자); len (args) == 2 → 2 개의 요소가있는 튜플
i
th 튜플 = (element_i arg1, element_i arg2…, element_i arg n
)
가장자리 케이스
1) 빈 문자열 : len (str) = 0 = 튜플 없음
2) 단일 문자열 : len (str) == len (args) == 1 개의 요소가있는 2 개의 튜플
zip()
# []
zip('')
# []
zip('hi')
# [('h',), ('i',)]
행동의 지퍼!
1. 두리스트 중 사전을 구축한다 [2]
keys = ["drink","band","food"]
values = ["La Croix", "Daft Punk", "Sushi"]
my_favorite = dict( zip(keys, values) )
my_favorite["drink"]
# 'La Croix'
my_faves = dict()
for i in range(len(keys)):
my_faves[keys[i]] = values[i]
2. 테이블에 열을 인쇄
"*"[3]은 "포장 풀기"라고합니다. f(*[arg1,arg2,arg3]) == f(arg1, arg2, arg3)
student_grades = [
[ 'Morty' , 1 , "B" ],
[ 'Rick' , 4 , "A" ],
[ 'Jerry' , 3 , "M" ],
[ 'Kramer' , 0 , "F" ],
]
row_1 = student_grades[0]
print row_1
# ['Morty', 1, 'B']
columns = zip(*student_grades)
names = columns[0]
print names
# ('Morty', 'Rick', 'Jerry', 'Kramer')
추가 크레딧 : 압축 해제
zip(*args)
"unzipping"이라고 불리며 zip
numbers = (1,2,3)
letters = ('a','b','c')
zipped = zip(numbers, letters)
print zipped
# [(1, 'a'), (2, 'b'), (3, 'c')]
unzipped = zip(*zipped)
print unzipped
# [(1, 2, 3), ('a', 'b', 'c')]
unzipped
: tuple_1 = 압축 된 각 튜플의 e1 tuple_2 = 각각의 e2zipped
각주
- 한 번에 하나씩 구성원을 리턴 할 수있는 오브젝트 (예 : 목록 [1,2,3], 문자열 'I like codin', 튜플 (1,2,3), 사전 { 'a': 1, 'b' : 2})
- {key1 : value1, key2 : value2 ...}
- “포장 풀기”(*)
*
암호:
# foo - function, returns sum of two arguments
def foo(x,y):
return x + y
print foo(3,4)
# 7
numbers = [1,2]
print foo(numbers)
# TypeError: foo() takes exactly 2 arguments (1 given)
print foo(*numbers)
# 3
*
numbers
(1 개 인수) 가져 와서 2 개의 요소를 2 개 인수로 '포장 풀기'
zip
있습니까? 왜 세 가지 목록이 있어야합니까? 어떻게 생겼습니까?