random是Python标准库中提供的专门用于生成随机数的模块,我曾在《利用Python生成随机数》中提到了利用random模块来生成随机数的几种方法。今天又出现了一个新的需求,打乱列表元素。还是正式点说吧,就是以随机顺序访问列表的元素。
要想以随机的顺序访问列表,最简单的方法是首先将列表转化为随机的顺序,然后再线性的访问处理后的列表即可。random中就有方法提供了这样的“洗牌”操作,那就是random.shuffle。来看看下面的例子:
>>> L = range(10) >>> L [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> import random >>> random.shuffle(L) >>> L [9, 7, 2, 8, 6, 1, 5, 3, 4, 0]
利用该方法简单而高效。同时,该方法接收一个可选的random参数,允许传入一个无参数的函数并随机返回[0.0, 1.0)之间的浮点数,默认情况下,它是random.random()函数。
另外,可能还有一个经常会用到的功能就是从列表里随机抽取几个元素返回,这就依然使用在生成随机数一文里提到的random.sample方法即可,例如:
>>> random.sample(L, 5) [2, 5, 3, 9, 0]
很简单~但很实用!