zoukankan      html  css  js  c++  java
  • python3学习笔记--zip()函数用法

    与python2不同的是,zip传入可迭代对象,将对象中对应的元素打包成一个个tuple,返回zip对象。

    a=[1,2,3]
    b=[4,5,6]
    c=['a','b','c','d']
    a_b=zip(a,b)
    print(a_b)

    <zip object at 0x000000001015F048> zip对象是迭代器iterator,可以验证一下:

    from collections import Iterator
    isinstance(a_b,Iterator)

    True 所以要用list得到预想的结果。

    a_b=list(zip(a,b))
    a_c=list(zip(a,c))
    print(a_b)
    print(a_c)
    [(1, 4), (2, 5), (3, 6)]
    [(1, 'a'), (2, 'b'), (3, 'c')]

    可以看到a与c长度不一致时,按照长度短的a返回list。 类似,利用*将a_b,a_c, unzip解压时,返回的也是迭代器,用list得到预期结果。

    list(zip(*a_b))
    list(zip(*a_c))
    [(1, 2, 3), (4, 5, 6)]
    [(1, 2, 3), ('a', 'b', 'c')]

    例子:完成矩阵转置,

    d=[a,b]
    list(map(list,zip(*d)))

    [[1, 4], [2, 5], [3, 6]] 

    或者用列表生成式: [ [row[x] for row in d] for x in range(len(d[0]))]

  • 相关阅读:
    WPF复杂形状按钮
    (WPF)360安全卫士界面设计
    WPF图标拾取器
    WPF透明窗体制作
    空间分析开源库GEOS
    GIS开源程序收集
    flask 链接 url_for()
    自定制404错误页码
    Flask 模板语言
    flask路由和视图和cookie
  • 原文地址:https://www.cnblogs.com/straight/p/7717691.html
Copyright © 2011-2022 走看看