Python中zip()函数用法举例ITeyewangyi - 超凡娱乐

Python中zip()函数用法举例ITeyewangyi

2018-11-17 07:27:54 | 作者: 采蓝 | 标签: 函数,元素,概率 | 浏览: 1955

界说: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

这个函数有个约束,指定概率的列表有必要和元素一一对应,并且和为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之间均匀取值的,明显咱们的意图现已到达

 

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

旧址:https://www.lfyzjck.com/python-zip/

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章