本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值。详情如下:

一、定义:

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

二、用法示例:

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

>>> 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)]

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

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

比如我们有一个由列表描述的二维矩阵

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

2.以指定概率获取元素

>>> 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()函数用法实例教程

本文地址: http://www.cppcns.com/jiaoben/python/111464.html

zip在python中的用法_Python中zip()函数用法实例教程相关推荐

  1. python中symbols函数用法_Python基础之函数用法实例详解

    本文以实例形式较为详细的讲述了Python函数的用法,对于初学Python的朋友有不错的借鉴价值.分享给大家供大家参考之用.具体分析如下: 通常来说,Python的函数是由一个新的语句编写,即def, ...

  2. python在工厂中的运用_Python常见工厂函数用法示例

    工厂函数:能够产生类实例的内建函数. 工厂函数是指这些内建函数都是类对象, 当调用它们时,实际上是创建了一个类实例. Python中的工厂函数举例如下: 1. int(),long(),float() ...

  3. python中all函数的用法_python中map、any、all函数用法分析

    这篇文章主要介绍了 python 中 map . any . all 函数用法 , 实例分析了 map . any . all 函数 的相关使用技巧 , 具有一定参考借鉴价值 , 需要的朋友可以参考下 ...

  4. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  5. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  6. php debug_print_backtrace,php中debug_backtrace、debug_print_backtrace和匿名函数用法实例

    本文实例讲述了php中debug_backtrace.debug_print_backtrace和匿名函数用法.分享给大家供大家参考.具体分析如下: debug_print_backtrace() 是 ...

  7. oracle中trim,ltrim,rtrim函数用法(简单易懂)

    oracle中trim,ltrim,rtrim函数用法 用法一.去空格 函数 作用 TRIM TRIM()去除指定字符串的前后空格 LTRIM LTRIM()去除指定字符串的前面空格 RTRIM RT ...

  8. android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程

    易采站长站为您分析Android中颜色选择器和改变字体颜色的实例教程,其中改变字体颜色用到了ColorPicker颜色选择器,需要的朋友可以参考下 1.构建一张七彩图: 我们经常看到这种样子的颜色选择 ...

  9. python的for语句用法_python中list循环语句用法实例

    本文实例讲述了python中list循环语句用法.分享给大家供大家参考.具体用法分析如下: Python 的强大特性之一就是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个 ...

最新文章

  1. 【Linux】Linux添加系统调用以及内核编译过程
  2. 【Android 异步操作】手写 Handler ( Handler 发送与处理消息 | Handler 初始化 | 完整 Handler 代码 )
  3. python读取第二行_从CSV文件读取第二行到Python
  4. g++ linux intel 汇编,g++ linux
  5. common lisp 学习第三天 函数、注释
  6. 暴力枚举——回文质数(洛谷 P1217)
  7. DelayedOperationPurgatory分析
  8. css如何调整红心样式_条码软件如何调整条码数据的样式
  9. python flask 路由_python框架flask入门之路由及简单实现方法
  10. sap系统搭建教程_手把手安装SAP ERP系统
  11. 央行发布洗钱风险自评估指引 12月31日前更新制度
  12. 从“断臂求生”到一骑绝尘,航运巨头马士基如何利用区块链技术力挽狂澜?
  13. 中国新一代超级安全核燃料材料入堆辐照试验开始
  14. 【智能优化算法】多目标于分解的多目标进化算法MOEA/D算法(Matlab代码实现)
  15. C#创建文件,覆盖文件,读取文件
  16. 硬核图解面试最怕的红黑树【建议反复摩擦】
  17. ps污点修复画笔用法和案例:去除脸上痘痘
  18. 前端页面闪烁提示用户
  19. 想要分离歌曲内的伴奏?轻松搞定
  20. 舌尖上的中国第一季整理笔记

热门文章

  1. 为IoT应用搭建DevOps管道
  2. 调整oracle数据库编码
  3. 三网融合催生第三方数据服务产业
  4. 代码理解(2009.11.20)
  5. 实用分享-免费录屏工具(无水印)
  6. 索尼android 8,索尼宣布Android 8.0升级名单 Z系列被抛弃
  7. linux6.5修复引导,CentOS 6.5 修复grub引导
  8. centos中mysql启动失败,解决CentOS下mysql启动失败
  9. Requests上传文件
  10. 21天Jenkins打卡day8-配置SSH远程服务器