美文网首页Python
使用zip同时迭代多个序列

使用zip同时迭代多个序列

作者: eeert2 | 来源:发表于2020-04-15 21:41 被阅读0次

    一、考虑这样一个场景,我们有两个数值列表:
    [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可以直接达到这种效果]

    相关文章

      网友评论

        本文标题:使用zip同时迭代多个序列

        本文链接:https://www.haomeiwen.com/subject/owohvhtx.html