python-两列表对应元素相加形成新列表 zip
zip()函数:
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
如果需要了解 Pyhton3 的应用,可以参考 Python3 zip()。
两列表对应元素相加形成新列表:
实例:
>>>a = [1, 2]
>>>b = [3, 4]
#列表生成式
>>>c = [i + j for i, j in zip(a, b)]
[4, 6]
打包为元组的列表:
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = list(zip(a,b)) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>>print(*zipped)
(1, 4) (2, 5) (3, 6)
>>> list(zip(*zipped)) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
将两个列表转换为字典:
现有2个列表
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
需要将转换为字典,结果如下:
a_dict = {'name' : 'Monty', 'age' : 42, 'food' : 'spam'}
那么最简单的方法是什么呢?
完整代码
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
a_dict = dict(zip(keys, values))
print(a_dict) #{'name': 'Monty', 'age': 42, 'food': 'spam'}