Python中zip()函数用法实例教程
本篇章节讲解Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值。详情如下: 一、定义: zip([iterable,...]) 二、用法示例: 读者看看下面的例子,对zip()函数的基本用法就可以明白了: >>> a = [1,2,3] >>> b = [4,5,6] >>> c = [4,6,7,8] >>> zipped = zip(a,b) [(1,4),(2,5),(3,6)] >>> zip(a,c) [(1,6)] >>> zip(*zipped) [(1,3),(4,6)] 对于这个并不是很常用函数,下面举几个例子说明它的用法: 1.二维矩阵变换(矩阵的行列互换) 比如我们有一个由列表描述的二维矩阵 a = [[1,3],[4,6],[7,8,9]] 通过python列表推导的方法,我们也能轻易完成这个任务 print [ [row[col] for row in a] for col in range(len(a[0]))] [[1,4,7],[2,8],[3,9]] 另外一种让人困惑的方法就是利用zip函数: >>> a = [[1,9]] >>> zip(*a) [(1,7),8),9)] >>> map(list,zip(*a)) [[1,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终止循环 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |