`
shuiyutian
  • 浏览: 10979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python中zip()函数用法举例

阅读更多

定义:zip([iterable, ...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:

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

对于这个并不是很常用函数,下面举几个例子说明它的用法:

* 二维矩阵变换(矩阵的行列互换)

比如我们有一个由列表描述的二维矩阵
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通过python列表推导的方法,我们也能轻易完成这个任务

print [ [row[col] for row in a] for col in range(len(a[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

另外一种让人困惑的方法就是利用zip函数:

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

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

* 以指定概率获取元素

>>> import random
>>> def random_pick(seq,probabilities):
	x = random.uniform(0, 1)
	cumulative_probability = 0.0
	for item, item_probability in zip(seq, probabilities):
		cumulative_probability += item_probability
		if x < cumulative_probability: break
	return item

>>> for i in range(15):
	random_pick("abc",[0.1,0.3,0.6])
	
'c'
'b'
'c'
'c'
'a'
'b'
'c'
'c'
'c'
'a'
'b'
'b'
'c'
'a'
'c'

这个函数有个限制,指定概率的列表必须和元素一一对应,而且和为1,否则这个函数可能不能像预想的那样工作。
稍微解释下,先利用random.uniform()函数生成一个0-1之间的随机数并复制给x,利用zip()函数将元素和他对应的概率打包成tuple,然后将每个元素的概率进行叠加,直到和大于x终止循环
这样,”a”被选中的概率就是x取值位于0-0.1的概率,同理”b”为0.1-0.4,”c”为0.4-1.0,假设x是在0-1之间平均取值的,显然我们的目的已经达到

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

原址:http://www.lfyzjck.com/python-zip/

分享到:
评论

相关推荐

    Python中zip()函数的简单用法举例

    通过上述讲解,可以看出zip()函数在Python中是一个非常实用的内置函数,尤其是在处理并行序列和矩阵转置等问题时,使用zip()可以大幅简化代码,提高执行效率。以上内容对Python编程学习和实践具有重要的参考价值。

    python中的 zip函数详解及用法举例

    Python中的`zip`函数是一个非常实用的内置工具,它允许你在多个可迭代对象之间进行同步迭代,将它们的对应元素组合成元组,并返回一个由这些元组组成的列表。这在处理多列数据或者需要同时操作多个序列时非常有用。 ...

    Python用zip函数同时遍历多个迭代器示例详解

    本文主要介绍的是Python如何使用zip函数同时遍历多个迭代器,文中的版本为Python3,zip函数是Python内置的函数。下面话不多说,来看详细的内容。 应用举例 &gt;&gt;&gt; list1 = ['a', 'b', 'c', 'd'] &gt;&gt;&gt; list2 = ['apple...

    专门用于计算频散现象各种功能函数都提供并且还有举例说明.zip

    这个压缩包“专门用于计算频散现象各种功能函数都提供并且还有举例说明.zip”显然是一个工具集合或者代码库,提供了用于分析和理解频散性质的函数和示例。以下将详细介绍其中可能包含的知识点: 1. **频散方程**:...

    Python的GUI编程模块EasyGUI.zip

    相反,所有的 GUI 交互都是通过简单的函数调用来调用的。EasyGUI 运行在 Python2 和3 上,除了 python 之外没有任何依赖。举例:&gt;&gt;&gt; import easygui &gt;&gt;&gt; easygui.ynbox('Shall I continue?', 'Title', ('...

    Python核心编程第二版

     6.17.2 元组类型操作符和内建函数、内建方法   6.18 元组的特殊特性   6.18.1 不可变性给元组带来了什么影响   6.18.2 元组也不是那么“不可变”   6.18.3 默认集合类型   6.18.4 单元素元组   ...

    Python-2023 Python面试题-优质-百余题

    3. **Python中断言方法举例** - `assert`语句用于测试某个条件是否为真,如果为假则抛出`AssertionError`异常。例如: ```python assert x &gt; 0, "x should be positive" ``` 4. **zip()函数用法** - `zip()`...

    零基础Python入门-课程大纲.docx

    * 通过模拟掷骰子的案例,学习 random 模块和 zip() 函数的使用 * 学习 Python 绘图库 matplotlib 和科学计算库 NumPy 第十章:案例 8 -- 空气质量指数(AQI)计算及分析 * 通过 AQI 计算的案例,学习分支结构、函数...

    运算程序设计举例.zip

    本例中,我们关注的是"运算程序设计举例.zip"这个文件,它包含了一个名为"运算程序设计举例.swf"的子文件,很可能是某种交互式教程或演示,用于解释运算程序设计的概念和实践。 运算程序设计主要涵盖以下几个关键...

    Python自动办公实例-excel处理实例(二维表转一维表).zip

    这里我们使用melt()函数举例: ```python one_dim_df = df.melt(id_vars='Name', var_name='Attribute', value_name='Value') ``` 上述代码中,'Name'列被视为不变的标识符,'Attribute'将原来的列名转换为新的列,...

    5.6 曲线拟合应用举例(ppt).zip

    在本主题"5.6 曲线拟合应用举例(ppt)"中,我们将深入探讨曲线拟合的实际应用及其方法。 首先,我们要理解曲线拟合的基本原理。当面临一组离散的数据点时,我们可能希望找到一个连续函数来描述这些点的分布趋势。这...

    python面试笔试题(现场应聘收集)

    4. **Python标准库**:内置函数(如len、range、zip、enumerate)、os模块(用于操作系统交互)、sys模块(系统相关)、re模块(正则表达式)、json模块(JSON数据处理)、collections模块(高级数据结构)。...

    5.4 数据插值应用举例(ppt).zip

    10. **软件工具**:在实际操作中,我们可以使用各种编程语言(如Python的Scipy库、R语言的akima包)或专业软件(如Matlab、Mathematica)来实现数据插值。 这个PPT很可能是通过具体的实例和案例,详细讲解了以上...

    Python实现迭代时使用索引的方法示例

    举例来说,当我们有一个名字列表`['Adam', 'Lisa', 'Bart', 'Paul']`,如果想要在迭代的过程中,同时打印出名次和名字,就可以使用`enumerate()`函数。通过设置`enumerate()`的起始索引参数为1(默认为0),就可以...

    标准函数stdlib.h应用举例_单片机C语言实例(纯C语言源代码).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    内部函数intrins.h应用举例_单片机C语言实例(纯C语言源代码).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    字符函数ctype.h应用举例_单片机C语言实例(纯C语言源代码).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

Global site tag (gtag.js) - Google Analytics