zip可接受多个序列作为参数,返回一个tuple列表。

例1:没有参数

>>> b = zip()

>>> print b

[]

例2:一个参数

>>> a = (1,2,3)

>>> b = zip(a)

>>> print b

[(1,), (2,), (3,)]

例3:序列长度不同

>>> a = (1,2,3)

>>> c = (4,5,6,7)

>>> b = zip(a,c)

>>> print b

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

例4: zip的多个序列操作

>>> a = (1,2,3)

>>> c = (4,5,6)

>>> d = (7,8,9)

>>> b = zip(a,c,d)

>>> print b

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

例5:

>>> x = (1,2,3)

>>> y = (4,5,6)

>>> z = (7,8,9)

>>> a = zip(x,y,z)

>>> b = zip(*a)

>>> print b

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

没有*号的结果如下:

>>> b = zip(a)

>>> print b

[((1, 4, 7),), ((2, 5, 8),), ((3, 6, 9),)

一般认为这是一个unzip的过程,它的运行机制是这样的:

在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

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

例6:

>>> x = (1,2,3)

>>> a = zip(*[x]*3)

>>> print a

[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

它的运行机制是这样的:

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

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

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

pythpn的zip函数的更多相关文章

  1. zip函数-Python 3

    zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表. zip函数在获取数据后,生成字典(dict)时比较好用. for examples: # Code based on P ...

  2. Python: zip函数

    zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表. 参考链接解释

  3. python(29)强大的zip函数

    zip函数:它是python的内建函数,(与序列有关的内建函数有:sorted().reversed().enumerate().zip()),其中sorted()和zip()返回一个序列(列表)对象 ...

  4. zip函数

    zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个包含元组的列表. x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) ...

  5. 【python】zip()函数

    来源:http://www.cnblogs.com/frydsh/archive/2012/07/10/2585370.html zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tupl ...

  6. python中zip函数

    zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表.(在海豚实习时自己写了一个要用到zip的函数,那个例子非常代表性) 示例1 for i,j in zip(range(3) ...

  7. python中使用zip函数出现<zip object at 0x02A9E418>

    在Python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方 ...

  8. python中的 zip函数详解

    python中zip()函数用法举例 定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple ...

  9. Python中zip()函数用法

    定义:zip([iterable, …])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的l ...

随机推荐

  1. SHOW CREATE DATABASE Syntax

    SHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name Shows the CREATE DATABASE statement that cre ...

  2. 初学spring(二)

      1.spring推荐使用接口编程,配合di可以达到层与层之间解耦

  3. 我也来谈谈使用Zen Coding快速开发html和css原理

    zen coding 是一种仿css选择器的语法来快速开发html和css的开源项目.现已更名为Emmet.可以到github上下载拜读.在这个都想偷懒的世界里,此方法可以极大的缩短开发人员的开发时间 ...

  4. Session值的存储与删除

    private static void SetSession<T>(string key, T val) { HttpContext.Current.Session[key] = (T)v ...

  5. Codeforces Round #244 (Div. 2)——Checkposts

    题目链接 题意: 给定n个点,每一个点有一个权值的有向图.如今须要选定一些点,使得这些点权值和最小.且满足:假设i能到达j且j能到达i,那么i.j能够仅仅选一个 分析: 强联通模板题 //使用时仅仅更 ...

  6. 使用SVN管理unityproject

     我们的项目使用SVN管理.这几天遇到了几个问题,攻克了一下.顺便做了一个总结. 1.关于使用SVN管理unity项目的一些设置和说明 首先在unity中进行两部操作:Edit->Proje ...

  7. hdu 4821 字符串hash+map判重 String (长春市赛区I题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4821 昨晚卡了非常久,開始TLE,然后优化了之后,由于几个地方变量写混.一直狂WA.搞得我昨晚都失眠了,,. 这 ...

  8. Creating Icon Overlay Handlers / 创建图标标记 Handlers (续) / VC++, Windows, DLL, ATL, COM

    创建图标标记 Handlers (续) 1.新建一个ATL Project. 2.建议将 Project Property 中 Linker – General - “Register Output” ...

  9. placeholder 不支持进行兼容处理

    ;(function () { //全局ajax处理 $.ajaxSetup({ complete: function (jqXHR) {}, data: { }, error: function ( ...

  10. Extjs中设置只读的样式问题

    废话不多说,直接上代码:   view.down('#imageFile').hide(); view.down('#save_button').hide(); view.show(); view.d ...