@@ -19,17 +19,19 @@ zip()的参数是可迭代对象。例如:
19
19
>>> colors = ["red", "green", "blue"]
20
20
>>> values = [234, 12, 89, 65]
21
21
>>> for col, val in zip(colors, values):
22
- ... print (col, val)
22
+ ... print (col, val) #Python 3: print((col, val))
23
23
...
24
24
('red', 234)
25
25
('green', 12)
26
26
('blue', 89)
27
27
28
28
注意观察,zip()自动进行了匹配,并且抛弃不对应的项。
29
29
30
- ##参数* iterables
30
+ ##参数` *iterables `
31
31
32
- 这是zip()的雕虫小技了,在前面的文档中,zip()的参数使` *iterables ` ,这是什么意思呢?
32
+ 这是` zip() ` 的雕虫小技。
33
+
34
+ 文档中显示` zip() ` 的参数使` *iterables ` ,这是什么意思呢?
33
35
34
36
在 [ 《函数(3)》] ( ./203.md ) 中,讲述“参数收集”和“另外一种传值”方法时,遇到过类似的参数,把其中一个例子再拿出来欣赏:
35
37
@@ -42,7 +44,7 @@ zip()的参数是可迭代对象。例如:
42
44
>>> add(*bars)
43
45
5
44
46
45
- zip()也类似上面示例中构造的那个add() 函数。
47
+ ` zip() ` 也类似上面示例中构造的那个 ` add() ` 函数。
46
48
47
49
>>> dots = [(1, 2), (3, 4), (5, 6)]
48
50
>>> x, y = zip(*dots)
@@ -56,33 +58,33 @@ zip()也类似上面示例中构造的那个add()函数。
56
58
>>> m = [[1, 2],
57
59
[3, 4],
58
60
[5, 6]]
59
- >>> zip(*m)
61
+ >>> zip(*m) #Python 3: list(zip(*m))
60
62
[(1, 3, 5),
61
63
(2, 4, 6)]
62
64
63
65
下面再看一个有点绚丽的:
64
66
65
67
>>> seq = range(1, 10)
66
- >>> zip(*[iter(seq)]*3)
68
+ >>> zip(*[iter(seq)]*3) #Python 3: list(zip(*[iter(seq)]*3))
67
69
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
68
70
69
71
感觉有点太炫酷了,不是太好理解。其实,分解一下,就是:
70
72
71
73
>>> x = iter(range(1, 10))
72
- >>> zip(x, x, x)
74
+ >>> zip(x, x, x) # Python 3: list(zip(x, x, x) )
73
75
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
74
76
75
- 这种炫酷的代码,我不提倡应用到编程实践中,这里仅仅使展示一下zip() 的使用罢了。
77
+ 这种炫酷的代码,我不提倡应用到编程实践中,这里仅仅是展示一下 ` zip() ` 的使用罢了。
76
78
77
- 关于在字典中使用zip() 就不做过多介绍了,因为在 [ 《语句(4)》] ( ./124.md ) 中已经做了完整阐述。
79
+ 关于在字典中使用 ` zip() ` 就不做过多介绍了,因为在 [ 《语句(4)》] ( ./124.md ) 中已经做了完整阐述。
78
80
79
81
##更酷的示例
80
82
81
83
最后,展示一个来自网络的示例,或许在某些时候用一下,能够人前炫耀。
82
84
83
85
>>> a = [1, 2, 3, 4, 5]
84
86
>>> b = [2, 2, 9, 0, 9]
85
- >>> map(lambda pair: max(pair), zip(a, b))
87
+ >>> map(lambda pair: max(pair), zip(a, b)) #Python 3: list(map(lambda pair: max(pair), zip(a, b)))
86
88
[2, 2, 9, 4, 9]
87
89
88
90
参考:
0 commit comments