python基礎之range()函式和random模組
阿新 • • 發佈:2020-12-09
之前在寫指令碼時,經常會用到range()函式和random模組,有必要好好總結一下它們的使用方法
1、range()函式
值得說明的是:python3和python2中的range()函式有些區別(詳情可以看看菜鳥教程中的講解) Python3 range() 函式返回的是一個可迭代物件(型別是物件),而不是列表型別>>> temp = range(1, 5) >>> print(temp) range(1, 5) >>> print(type(temp)) <class 'range'>可以通過list()來將其轉換為列表
>>> list(temp)
[1, 2, 3, 4]
語法:
range(stop) range(start, stop[, step])
引數說明:
- start: 計數從 start 開始。預設是從 0 開始。例如range(5)等價於range(0, 5);
- stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
- step:步長,預設為1。例如:range(0, 5) 等價於 range(0, 5, 1)
>>> temp = range(1, 5) >>> print(temp) [1, 2, 3, 4] >>> print(type(temp))<type 'list'>
以下在python3中實驗
range()函式一般結合for迴圈使用,例如遍歷一個列表時,如果要通過列表的下標來列印每個元素,則可以通過range()函式實現
>>> nums = ["a","b","c","d","e"] >>> for i in range(len(nums)): print(nums[i]) a b c d e
random模組
當需要生成隨機數或者從一個列表中隨機取一條或多條資料時,會使用到random模組
1、生成的隨機數
使用random.randint(a, b)來生成一個範圍內的隨機數>>> random.randint(32768, 66538)39701
2、從一組資料中隨機獲取一個元素
使用random.choice(sequence)可以從列表,元組或字串中隨機獲取一個元素>>> random.choice([1,2,3,4,5]) 1 >>> random.choice([1,2,3,4,5]) 5
3、從一組資料中隨機獲取n個元素
使用random.sample(sequence, n)可以從列表,元組或字串中隨機獲取n個元素,且不重複
>>> l = [1,2,3,4,5] >>> random.sample(l,3) [4, 1, 5] >>> random.sample(l,3) [4, 2, 3] >>> random.sample(l,4) [4, 1, 5, 3] >>> l [1, 2, 3, 4, 5] # 原序列l沒有變化
一個實際場景
結合range函式和random模組的一個實際場景 有一個介面,它的功能是批量刪除資料,對應到頁面上:選擇多條資料後,點選批量刪除按鈕,然後會把選擇的資料都刪掉。 我要做的是: 1、查詢列表中的資料,獲取其資料總量 2、從查詢到的資料中隨機取出n條資料 3、把這n條資料傳給介面,然後批量刪掉 現在需要把每次要批量刪到的數量確定下來,通過如下方式即可count = random.choice(range(1, total+1))
total 表示查詢到的資料總數,
range(1, total+1)表示1~total範圍的一個可迭代列表, random.choice(range(1, total+1)),最小為1,最大為total,從這個範圍隨機獲取一個數,它就是準備刪掉的資料量, 後面只需從查詢結果中取出這麼多條資料即可