1. 程式人生 > 實用技巧 >python基礎之range()函式和random模組

python基礎之range()函式和random模組

之前在寫指令碼時,經常會用到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)
Python2中range() 函式返回的是列表
>>> 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,從這個範圍隨機獲取一個數,它就是準備刪掉的資料量, 後面只需從查詢結果中取出這麼多條資料即可