之前在寫腳本時,經常會用到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,從這個范圍隨機獲取一個數,它就是准備刪掉的數據量,
后面只需從查詢結果中取出這么多條數據即可