zip函数特殊的for迭代:
###########################################
描述
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
语法
zip 语法:
zip([iterable, ...])
参数说明:iterabl -- 一个或多个迭代器;
返回值
返回元组列表。
###############################################################
我们先比较一下下面案例:
In [3]: {key:value for key in "ABC" for value in "JKL"}
Out[3]: {'A': 'L', 'B': 'L', 'C': 'L'}
In [4]: {key:value for key,value in zip('abc','jkl')}
Out[4]: {'a': 'j', 'b': 'k', 'c': 'l'}
可以发现for循环后字典中的值都是一样的;那我们先分析看看:
In [6]: for key in 'abc':
...: for value in 'jkl':
...: d[key] = value
...: print(d)
...:
{'a': 'j'}
{'a': 'k'}
{'a': 'l'}
{'a': 'l', 'b': 'j'}
{'a': 'l', 'b': 'k'}
{'a': 'l', 'b': 'l'}
{'a': 'l', 'b': 'l', 'c': 'j'}
{'a': 'l', 'b': 'l', 'c': 'k'}
{'a': 'l', 'b': 'l', 'c': 'l'}
这样写一下,你就会明白原因。
字典key唯一,相同key,新值覆盖原来的值