资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python的压缩函数 python 压缩文件

python中zip函数详解

a=[1,2,3,4,5,6,7,8,9]

我们提供的服务有:成都做网站、成都网站建设、微信公众号开发、网站优化、网站认证、曲江ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的曲江网站制作公司

b=[5,9,2,4,5,7,3,1,7]

c=list(zip(a,b))#打包

print(c)

输出内容:[[1,5],[2,9],[3,2],[4,4],[5,5],[6,7],[7,3],[8,1],[9,7]]

d=list(zip(*c))#解包

print(d)

输出内容:[[1,2,3,4,5,6,7,8,9],[5,9,2,4,5,7,3,1,7]]

python zip 是什么

zip就是把2个数组糅在一起

x=[1, 2, 3, 4, 5 ]

y=[6, 7, 8, 9, 10]

zip(x, y)就得到了

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

比如你有2组坐标,你想两两对应的相加,那么zip函数就很有用了。

再比如,你有2个数组A,B,A存了班级里的人的名字,B是每个人的考试分数,你需要通过某个人的名字来查考试分数,那你需要一个字典,zip可以很方便地帮你建立字典:

x=['bob','tom','kitty']

y=[80,90,95]

d=dict(zip(x,y))

[('bob', 80), ('tom', 90), ('kitty', 95)]

d['bob']

返回80,多方便啊

请简述zip函数的功能及Python.3.x中使用zip函数生成列表的方法。

一、zip函数的功能如下:

将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。当各个迭代器中元素的个数不一致时,则返回列表中长度最短的情况,利用 *号操作符,可以将元组解压为列表。

二、Python.3.x中使用zip函数生成列表的方法如下:

1、作出说明,使用zip函数将可迭代的对象作为参数。

2、将对象中对应的元素打包成一个个元组。

3、用zip函数平行地遍历多个迭代器,如果可迭代对象的长度不相同将按短的序列为准。

4、遍历过程中产生元组,Python.3.x会把元组生成好,然后生成列表。

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的压缩函数 python 压缩文件
URL网址:http://cdkjz.cn/article/dosddis.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220