詳解Python中打亂列表順序random.shuffle()的使用方法
之前自己一直使用random中 randint生成隨機數(shù)以及使用for將列表中的數(shù)據(jù)遍歷一次。
現(xiàn)在有個需求需要將列表的次序打亂,或者也可以這樣理解:
【需求】將一個容器中的數(shù)據(jù)每次隨機逐個遍歷一遍。
random.shuffle()方法提供了完美的解決方案。
不會生成新的列表,只是將原列表的次序打亂
# shuffle()使用樣例 import random x = [i for i in range(10)] print(x) random.shuffle(x) print(x)
源碼及注釋(個人翻譯注釋)
def shuffle(self, x, random=None):
"""Shuffle list x in place, and return None.
原位打亂列表,不生成新的列表。
Optional argument random is a 0-argument
function returning a random float in [0.0, 1.0);
if it is the default None,
the standard random.random will be used.
可選參數(shù)random是一個從0到參數(shù)的函數(shù),返回[0.0,1.0)中的隨機浮點;
如果random是缺省值None,則將使用標準的random.random()。
"""
if random is None:
randbelow = self._randbelow
for i in reversed(range(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = randbelow(i + 1)
x[i], x[j] = x[j], x[i]
else:
_int = int
for i in reversed(range(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = _int(random() * (i + 1))
x[i], x[j] = x[j], x[i]
random 中其他的方法
class Random(_random.Random):
## -------------------- integer methods -------------------
def randrange(self, start, stop=None, step=1, _int=int):
def randint(self, a, b):
def _randbelow(self, n, int=int, maxsize=1 << BPF, type=type,
Method=_MethodType, BuiltinMethod=_BuiltinMethodType):
## -------------------- sequence methods -------------------
def choice(self, seq):
def shuffle(self, x, random=None):
def sample(self, population, k):
def choices(self, population, weights=None, *, cum_weights=None, k=1):
## -------------------- uniform distribution -------------------
def uniform(self, a, b):
## -------------------- triangular --------------------
def triangular(self, low=0.0, high=1.0, mode=None):
## -------------------- normal distribution --------------------
def normalvariate(self, mu, sigma):
## -------------------- lognormal distribution --------------------
def lognormvariate(self, mu, sigma):
## -------------------- exponential distribution --------------------
def expovariate(self, lambd):
## -------------------- von Mises distribution --------------------
def vonmisesvariate(self, mu, kappa):
## -------------------- gamma distribution --------------------
def gammavariate(self, alpha, beta):
## -------------------- Gauss (faster alternative) --------------------
def gauss(self, mu, sigma):
def betavariate(self, alpha, beta):
## -------------------- Pareto --------------------
def paretovariate(self, alpha):
## -------------------- Weibull --------------------
def weibullvariate(self, alpha, beta):
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pytest用例間參數(shù)傳遞的兩種實現(xiàn)方式示例
pytest提供了許多運行命令以供定制化運行某一類測試用例或者某個測試用例等,下面這篇文章主要給大家介紹了關(guān)于pytest用例間參數(shù)傳遞的兩種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-12-12
python實現(xiàn)requests發(fā)送/上傳多個文件的示例
今天小編就為大家分享一篇python實現(xiàn)requests發(fā)送/上傳多個文件的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
pandas創(chuàng)建DataFrame的7種方法小結(jié)
這篇文章主要介紹了pandas創(chuàng)建DataFrame的7種方法小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
pandas object格式轉(zhuǎn)float64格式的方法
下面小編就為大家分享一篇pandas object格式轉(zhuǎn)float64格式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python and、or以及and-or語法總結(jié)
這篇文章主要介紹了Python and、or以及and-or語法總結(jié),本文分別給出實例講解它們的使用方法,需要的朋友可以參考下2015-04-04
python網(wǎng)絡(luò)爬蟲基于selenium爬取斗魚直播信息
目前是直播行業(yè)的一個爆發(fā)期,由于國家對直播行業(yè)進行整頓和規(guī)范,現(xiàn)在整個直播行業(yè)也在穩(wěn)固發(fā)展。隨著互聯(lián)網(wǎng)和網(wǎng)絡(luò)直播市場的快速發(fā)展,相信未來還有廣闊的發(fā)展前景。今天用selenium爬取一下斗魚直播信息將代碼分享給大家2022-03-03

