zip在python中的⽤法_Python中zip()函数⽤法实例教程本⽂实例讲述了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'
random在python中的意思'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()函数⽤法实例教程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论