zoukankan      html  css  js  c++  java
  • Python range 数据类型 [学习 Python 必备基础知识][看此一篇就够了][range()][range 元素元素检测、元素索引查找、切片、负索引][检测 range 对象是否相等]

    您的“关注”和“点赞”,是信任,是认可,是支持,是动力......

    如意见相佐,可留言。
    本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

    在这里插入图片描述

    1 range 类型概述

    range 类型表示不可变的数字序列,通常用于在 for 循环中循环指定的次数。

    range 类型相比常规 list 或 tuple 的优势在于一个 range 对象总是占用固定数量的(较小)内存,不论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的值)。

    2 range() 函数

    使用格式如下所示:

    class range(stop)
    class range(start, stop[, step])
    

    对以上格式说明,

    • range 构造器的参数必须为整数(可以是内置的 int 或任何实现了 index 特殊方法的对象)。

    • 如果省略 step 参数,其默认值为 1。 如果省略 start 参数,其默认值为 0,如果 step 为零则会引发 ValueError

    • 如果 step 为正值,确定 range r 内容的公式为 r[i] = start + step*i 其中 i >= 0r[i] < stop。如果 step 为负值,确定 range 内容的公式仍然为 r[i] = start + step*i,但限制条件改为 i >= 0 且 r[i] > stop。如果 r[0] 不符合值的限制条件,则该 range 对象为空。 range 对象确实支持负索引,但是会将其解读为从正索引所确定的序列的末尾开始索引。

    • 元素绝对值大于 sys.maxsize 的 range 对象是被允许的,但某些特性 (例如 len()) 可能引发 OverflowError

    • stop 参数:不包括stop本身。

    举例如下所示:

    >>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> list(range(1, 11))
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> list(range(0, 30, 5))
    [0, 5, 10, 15, 20, 25]
    >>> list(range(0, 10, 3))
    [0, 3, 6, 9]
    >>> list(range(0, -10, -1))
    [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
    >>> list(range(0))
    []
    >>> list(range(1, 0))
    []
    
    

    3 range 元素检测、元素索引查找、切片、负索引介绍

    range 对象实现了 collections.abc.Sequence ABC,提供如包含检测、元素索引查找、切片等特性,并支持负索引 ,举例如下所示:

    >>> r = range(0, 20, 2)
    >>> r
    range(0, 20, 2)
    >>> 11 in r
    False
    >>> 10 in r
    True
    >>> r.index(10)
    5
    >>> r[5]
    10
    >>> r[:5]
    range(0, 10, 2)
    >>> r[-1]
    18
    

    4 使用 ==!= 检测 range 对象是否相等

    使用 ==!= 检测 range 对象是否相等是将其作为序列来比较。

    也就是说,如果两个 range 对象表示相同的值序列就认为它们是相等的。

    请注意:比较结果相等的两个 range 对象可能会具有不同的 start, stop 和 step 属性。举例如下所示:

    range(0) == range(2, 1, 3)
    range(0, 3, 2) == range(0, 4, 2)
    

    5 版本区别和版本新功能(部分)

    • 3.2 版更改: 实现 Sequence ABC。 支持切片和负数索引。 使用 int 对象在固定时间内进行成员检测,而不是逐一迭代所有项。

    • 3.3 版更改: 定义 ==!= 以根据 range 对象所定义的值序列来进行比较(而不是根据对象的标识)。

    • 3.3 新版功能: start, stopstep 属性。

    【文章其它地址】

    微信公众号:码农阿杰

    CSDN 博客

    【参考资料】

    Python 官网

    Python 3.8.2 documentation

  • 相关阅读:
    CentOS/Ubuntu安装最新的gcc-9
    CentOS 7 源码安装 CMake 3.16.2 最新稳定版。解决 cmake: command not found 问题
    堆排序
    linux可重入、异步信号安全和线程安全
    目录
    教程文档
    推荐文章
    学习文档
    开发工具-索引
    同步/异步/阻塞/非阻塞
  • 原文地址:https://www.cnblogs.com/manongajie/p/12853365.html
Copyright © 2011-2022 走看看