alex_bn_lee

导航

【363】python 相关小技巧 | zip、zip(*)

1. 对列表进行乱序

通过 random.shuffle() 方法实现,直接对列表进行操作

>>> import random
>>> a = list(range(4))
>>> a
[0, 1, 2, 3]
>>> random.shuffle(a)
>>> a
[3, 0, 1, 2]

2. 获取指定范围的随机数

通过 random.uniform() 方法实现

>>> random.uniform(0,10)
2.3591479768289227
>>> random.uniform(9,10)
9.402797721231435

3. 将两个列表合并起来

通过 zip() 函数实现

>>> import random
>>> a = list(range(4))
>>> a
[2, 1, 0, 3]
>>> b = a.copy()
>>> random.shuffle(b)
>>> b
[2, 3, 0, 1]

>>> list(zip(a,b))
[(2, 2), (1, 3), (0, 0), (3, 1)]

>>> ba = list(zip(a,b))
>>> ba
[(2, 2), (1, 3), (0, 0), (3, 1)]

>>> c
[2, 1, 0, 3]
>>> list(zip(ba, c))
[((2, 2), 2), ((1, 3), 1), ((0, 0), 0), ((3, 1), 3)]

4. 合并后的分离

通过 zip(*) 来实现

>>> ba
[(2, 2), (1, 3), (0, 0), (3, 1)]
>>> m, n = zip(*ba)
>>> m
(2, 1, 0, 3)
>>> n
(2, 3, 0, 1)

参考:Python zip() 函数 

zip 函数:将 $x = [x_1, x_2, ..., x_n]$ 与 $y = [y_1, y_2, ..., y_n]$ 转为 $[(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)]$
可以理解为将两个 list 压缩成一个 list

zip(*) 函数:将 $[(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)]$ 转为 $x = [x_1, x_2, ..., x_n]$ 与 $y = [y_1, y_2, ..., y_n]$
可以理解为将一个 list 解压成两个 list

posted on 2019-01-27 13:58  McDelfino  阅读(174)  评论(1编辑  收藏  举报