python zip函数用于for循环_python zip 内置函数的使用
定义:zip([iterable, ...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:
1
2
3
4
5
6
7
8
9
>>> 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列表推导的方法,我们也能轻易完成这个任务
1
2
print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
另外一种让人困惑的方法就是利用zip函数:
1
2
3
4
5
>>> 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
* 以指定概率获取元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>>> 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之间平均取值的,显然我们的目的已经达到
python zip函数用于for循环_python zip 内置函数的使用相关推荐
- python函数大全和意思_python 之 内置函数大全
一.罗列全部的内置函数 二.range.xrange(迭代器) 无论是range()还是xrange()都是Python里的内置函数.这个两个内置函数最常用在for循环中.例如: >>&g ...
- python函数打印乘法表_Python中内置函数来打印数学乘法表
1.Python内置函数range的使用 range函数的作用可以理解取一个范围如下: >>>range(5) # :取一个在5的范围>range(0, 5) # 那么在这里取 ...
- python通过内置函数测试对象类型_Python的内置函数
函数名 功能描述 示例 abs() 返回数字的绝对值 abs(-45) divmod() 把除数和余数运算结合起来,返回一个包含商和余数的元组 divmod(7,2) 返回:(3,1) raw_inp ...
- python函数速查手册_Python进阶-内置函数大全
#1.abs() 绝对值或复数的模abs(-1) >>> 1 #2.all() 接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回Falseall([1,2,3] ...
- python常用内置函数可以操作字符串_Python常用内置函数(二)
字符串处理方法 1. str.capitalize: 将字符串首字母大写str.capitalize('abc')'Abc' 2. str.replace(old,new,[,count]): 替换字 ...
- python __call__一般用在哪些地方_Python __call__内置函数的作用和用法
开学了进入了实验室,需要协助大师兄做事,主要是OpenStack中的代码解析,但是涉及很多python高级用法,一时间有点麻烦,在做项目的同时慢慢更新博客.这次先写一下__call__的用法,因为经常 ...
- python函数作用域与闭包_python基础-08-内置函数、作用域、闭包、递归
python基础-内置函数.作用域.闭包.递归 1.常见的内置函数 常见的内置函数: 查看内置函数: print(dir(__builtins__)) 常见函数 type() 数据类型 print() ...
- python 倒叙 数组_Python函数合集:68个内置函数请收好!
内置函数就是python给你提供的, 拿来直接用的函数,比如print.,input等.截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # abs() di ...
- python模块的函数_python模块内置函数
python提供了一个内联模块buildin,该模块定义了一些软件开发中经常用到的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等. 模块的内置函数: 1.apply():可以调用可 ...
最新文章
- 怎样使用Debussy+ModelSim快速查看前仿真波形
- express 的 middleware 设计
- 将手机网站做成手机应用的JS框架
- 防风网-挡风抑尘墙:挡风抑尘墙
- 第11章 UART串口通信 练习题
- Python人工智能学习路线(长篇干货)
- is automatically signed, but provisioning profile has been manually specified. Set the provisioning
- 笔记本电脑如何设置html输出,笔记本电脑如何外接显示器 外接显示器详细步骤【详解】...
- 抢红包案例分析以及代码实现(二)
- 真过份,女友居然要我坐在马桶上小便
- PA 调试心得(一个电容引发的问题)
- java 摄像头 视频_javaCV-摄像头实时视频
- 2022-08-26 JQuery(二)
- java计算机毕业设计东理咨询交流论坛源码+数据库+系统+lw文档+部署
- ROS serial 读取IMU数据, 打包发布topic
- 金融业XIRR函数的算法思想与实现,java/plsql
- TCP/IP 基本C/S模型
- logstash filter 过滤器详解
- 零信任架构和访问控制模型ABAC
- bread是可数还是不可数_学了20年英语才明白:bread为什么是不可数名词?
热门文章
- Docker的工作原理
- autocad2016正交模式_Auto CAD2016开启正交快捷键是什么啊??
- 蓝桥杯c/c++真题 地宫寻宝
- “生活”才是生活的一部分
- 如何改善自己的情绪?
- Android 图形密码
- 《机器人动力学与控制》第九章——动力学 9.3 再看欧拉-拉格朗日运动方程
- 实用技巧|AD19快捷键大全
- BUUOJ-sqli_labs做题笔记
- html5 input email,html - HTML5 Email input pattern attribute - Stack Overflow