来源:我的博客文章(更好的格式)
例子
numbers = [1,2,3]
letters = 'abcd'
zip(numbers, letters)
# [(1, 'a'), (2, 'b'), (3, 'c')]
输入
零个或多个可迭代对象 [1](例如列表、字符串、元组、字典)
输出(列表)
第一个元组=(数字元素_1,字母元素_1)
第二个元组 =(e_2 个数字,e_2 个字母)
…
n-th tuple = (e_n 个数字, e_n 个字母)
- n 元组列表:n 是最短参数(输入)的长度
- len(numbers) == 3 < len(letters) == 4 → short= 3 → 返回 3 个元组
- 每个元组的长度 = # of args(元组从每个 arg 中获取一个元素)
- args =(数字,字母);len(args) == 2 → 包含 2 个元素的元组
i
元组 = (element_i arg1, element_i arg2…, element_i arg n
)
边缘案例
1) 空字符串:len(str)= 0 = 没有元组
2) 单个字符串:len(str) == 2 个元组,其中 len(args) == 1 个元素
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)
被称为“解压缩”,因为它具有相反的效果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})
- {键1:值1,键2:值2 ...}
- “开箱” (*)
*
代码:
# 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 arg) 并将其 2 个元素“解包”为 2 个 args