之前在写脚本时,经常会用到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,从这个范围随机获取一个数,它就是准备删掉的数据量,
 
后面只需从查询结果中取出这么多条数据即可