python zip()函数用法

python zip()函数用法

大家好,又见面了,我是全栈君。

zip() –内建函数

zip([iterable, …])
它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。
若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同;

与dict() 连用,可完成list组合成字典;

注:python3目前zip函数print输出不能正常显示,显示如:<zip object at 0x0000000002598548>

 

用法示例:

读者看看下面的例子,对zip()函数的基本用法就可以明白了:

 1 >>> a = [1,2,3]
 2 >>> b = [4,5,6]
 3 >>> c = [4,5,6,7,8]
 4 >>> n = zip(a,b)
 5 [(1, 4), (2, 5), (3, 6)]
 6 >>> zip(a,c)
 7 [(1, 4), (2, 5), (3, 6)]
 8 >>> zip(a)
 9 [(1,), (2,), (3,)]
10 >>> zip(*n)
11 [(1, 2, 3), (4, 5, 6)]

注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

 

1 >>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
2 >>> zip(*a)
3 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
4 >>> map(list,zip(*a))
5 [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

这种方法速度更快但也更难以理解,将list看成tuple解压,恰好得到我们“行列互换”的效果,再通过对每个元素应用list()函数,将tuple转换为list

 

1 >>> x = [1, 2, 3]
2 >>> r = zip(* [x] * 3)
3 >>> print r
4 [(1, 1, 1), (2, 2, 2), (3, 3, 3)]

这个运行机制是这样的:

[x]生成一个列表的列表,它只有一个元素x

[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

zip(* [x] * 3)的意思就明确了,zip(x, x, x)

 

转载于:https://www.cnblogs.com/feiyueNotes/p/8322340.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107745.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Go环境安装配置

    Go环境安装配置

    2022年2月18日
    41
  • Mysql和redis_简述Redis和MySQL的区别[通俗易懂]

    Mysql和redis_简述Redis和MySQL的区别[通俗易懂]我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的memcached(简称mc)。首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分。redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度。然而mc只是提供了简单的数据结构,比如…

    2022年6月16日
    52
  • 宽度学习详解(Broad Learning System)

    宽度学习详解(Broad Learning System)宽度学习(BroadLearningSystem)我也是最近才知道除了深度学习,还有一个神经网络叫宽度学习(下文统称BLS)。宽度学习是澳门大学科技学院院长陈俊龙和其学生于2018年1月发表的文章提出的,文章名为《BroadLearningSystem:AnEffectiveandEfficientIncrementalLearningSystemWithoutthe…

    2022年5月22日
    38
  • pycharm汉化包下载[通俗易懂]

    pycharm汉化包下载[通俗易懂]把解压后的文件放到pycharm安装目录lib文件夹下即可链接:https://pan.baidu.com/s/126-yg7ojwwryywBzUuVEhQ提取码:v5j0

    2022年5月9日
    39
  • C++Annoatation 02: More extensions to C , Some features of C++11

    C++Annoatation 02: More extensions to C , Some features of C++11

    2021年8月24日
    108
  • minhash算法_小k

    minhash算法_小k对于web网页去重的应用,如抄袭、镜像等,通过将网页表示为字符k-grams(或者k-shingles)的集合,把网页去重的问题转化为找到这些集合的交集。使用传统的方法存储这些巨大的集合以及计算它们之间的相似性显然是不够的,为此,对集合按某种方式进行压缩,利用压缩后的集合推断原来集合的相似性。 Jaccard相似性:只关注集合之间的交集大小。集合S和T的Jaccard相似性定义如下:

    2025年6月23日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号