• 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,从这个范围随机获取一个数,它就是准备删掉的数据量,
     
    后面只需从查询结果中取出这么多条数据即可

  • 相关阅读:
    Unity 游戏性能优化 学习
    常用网站
    Unity3d插件开发与SDK对接实战 学习
    Unity3D常用网络框架与实战解析 学习
    问题:grid卸载后重新安装时ASM磁盘识别不到了
    问题:oracle 12c rac数据库服务器的home目录丢失问题解决2018-06-25 18:30
    Linux启动报:UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY问题解决
    linux下网卡bonding配置(转)
    热扩容LVM形式的/(根)分区(无损增大、缩小LVM分区)
    LVM逻辑卷管理
  • 原文地址:https://www.cnblogs.com/hanmk/p/14109223.html
Copyright © 2020-2023  润新知