Python

使用zip同时迭代多个序列

2020-04-15  本文已影响0人  eeert2

一、考虑这样一个场景,我们有两个数值列表:
[1,3,5],[2,4,6],现在我们需要将位置相同的数值相加。
新的列表的值为[1+2,3+4,5+6],也就是[3,7,11]
如果使用常规的遍历方式是有点麻烦,且可读性很差。使用zip可以很好的解决这一问题。

from typing import List

def add_nums(num1: List[int], num2: List[int]) -> List[int]:
    return [i + j for i, j in zip(num1, num2)]

使用add_nums

if __name__ == '__main__':
    print(add_nums([1, 3, 5], [2, 4, 6])) # [3, 7, 11]

实现了这种特殊的加法,我们才能进一步去研究矩阵

二、当我们读表格文件,例如csv文件,我们会读取表头内容
如何将表头与内容组合就是一个问题。

['username', 'password', 'address']
['zhuyy', '123456', '杭州']
['lsu', '2084_73', '北京']
['lkd', '63*$er', '天津']
['dfj', '09rjs65', '重庆']
['dkg', 'dhj634', '上海']

使用zip解决这种问题就很方便

def to_dict(head: list, body: list) -> dict:
    return {
        name: value
        for name, value in zip(head, body)
        if name  # key 不能为空
    }

使用:

if __name__ == '__main__':
    named_content = to_dict(
        ['username', 'password', 'address'],
        ['zhuyy', '123456', '杭州']
    )
    print(named_content)
    # {'username': 'zhuyy', 'password': '123456', 'address': '杭州'}

备注:[python使用DictReader读取csv可以直接达到这种效果]

上一篇 下一篇

猜你喜欢

热点阅读