zoukankan      html  css  js  c++  java
  • Python

    介绍

    1. range 是一个类,不是函数
    2. 表示不可变的数字序列,通常用于在 for 循环中循环指定的次数

    两种语法格式

    range(stop)
    • 表示区间 [0, stop) 内的整数序列
    • 该区间从 0 开始、到 stop 结束,不包含 stop
    range(start, stop[, step]) 
    • 表示区间 [start, stop) 内的整数序列
    • 该区间从 start 开始、到 end 结束,不包含 end
    • step 是步进,默认是 1

    step 的取值规则

    • 如果 step 为正值,确定 range 某个值的公式为 r[i] start step*i 其中 >= 0 且 r[i] < stop
    • 如果 step 为负值,确定 range 某个值的公式仍然为 r[i] start step*i,但限制条件改为 >= 0 且 r[i] > stop

    返回值

    都是 range 实例对象

    一些简单的栗子

    >>> 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]
    
    >>> tuple(range(0, 10, 3))
    (0, 3, 6, 9)>>> set(range(0, -10, -1))
    {0, -1, -2, -3, -4, -5, -6, -7, -8, -9}
    
    >>> list(range(0))
    []
    
    >>> list(range(1, 0))
    []

    range 的优势

    相比常规的 list、tuple,range 的优势在于range 对象总是占用固定数量的较小内存,无论其所表示的范围有多大

    range 的特性

    range 对象实现了 collections.abc.Sequence ,提供了包括 index、索引、切片等特性

    r = range(0, 20, 2)
    print(r)
    print(list(r))
    
    # in
    print(10 in r)
    print(11 not in r)
    
    # index
    print(r.index(6))
    
    # 切片
    print(r[2])
    print(r[-1])
    
    
    # 输出结果
    range(0, 20, 2)
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    True
    True
    3
    4
    18

    但是切片仅支持索引取值 [ ],不支持 [ : ] 来取值

    ==、!= 操作

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

    r1 = range(0, 4, 2)
    r2 = range(0, 3, 2)
    print(r1 == r2)
    
    
    # 输出结果
    True

    循环遍历 range

    for item in range(3):
        print(item)
    
    
    # 输出结果
    0
    1
    2
  • 相关阅读:
    POJ 2955
    POJ 1276 多重背包
    UVA 11584 划分回文字串
    Uva 11400 照明系统
    POJ 2677 Tour
    Uva 437 巴比伦塔 && UVA10003
    12563 Jin Ge Jin Qu hao
    最小公共祖先 (Tarjan) POJ1470
    DB2
    SQLserver数据库
  • 原文地址:https://www.cnblogs.com/poloyy/p/15086994.html
Copyright © 2011-2022 走看看