介绍

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

Python - 详解 range()的更多相关文章

  1. 33 Python 详解命令解析 - argparse--更加详细--转载

    https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...

  2. [转载]python 详解re模块

    原文地址:python 详解re模块作者:Rocky 正则表达式的元字符有. ^ $ * ? { [ ] | ( ) .表示任意字符 []用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字 ...

  3. Python 详解修饰器 附带 js使用修饰器

    修饰器 功能 修饰器的主要功能是,在不改变已有代码的情况下,为某一个类,方法等扩展功能 首先看这样一段代码 def foo(): for i in range(10): print(i) foo() ...

  4. python 详解re模块

    正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系.^ 如果放在字 ...

  5. 【经典案例】Python详解设计模式:策略模式

    完成一项任务往往有多种方式,我们将其称之为策略. 比如,超市做活动,如果你的购物积分满1000,就可以按兑换现金抵用券10元,如果购买同一商品满10件,就可以打9折,如果如果购买的金额超过500,就可 ...

  6. python 详解正则表达式的使用(re模块)

    一,什么是正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件 ...

  7. python详解json模块

    我们在做工作中经常会使用到json模块,今天就简单介绍下json模块 什么是json JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它 ...

  8. Python——详解collections工具库

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天为大家介绍Python当中一个很好用也是很基础的工具库,叫做collections. collection在英文当中有容器的意思,所以顾 ...

  9. Python——详解__str__, __repr__和__format__

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第10篇文章,我们来聊聊Python当中的类. 打印实例 我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例 ...

随机推荐

  1. Windows10无线能连上但没有网络

    解决思路:重置widows10网络配置 步骤: 1.win+X键 2.在命令提示符窗口中,输入命令行:netsh winsock reset 3.然后按下回车键,这时就会提示重置Winsock目录成功 ...

  2. 通过AI识图判断图片是否为小票

    先在百度智能云中创建一个应用加入以下标记功能(没有智能云账号可以去创建一个,创建应用也都是些基本操作) 本次只用到标记的功能. 此功能在图像识别下面. 创建应用后,页面会出现平台分配的密钥:API K ...

  3. Qt 串口通信之使用16进制发送数据的转换方式

    Qt 串口通信之使用16进制发送数据的转换方式 一 概述 有时候在做上位机串口通讯时,经常需要将字符串转成16进制的形式作为发送,借此分析记录一下. 二 需求分析 //假设需要转换的字符:如下 QSt ...

  4. 49、django工程(cookie+session)

    49.1.介绍: 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cooki ...

  5. 13、windows下卸载oracle

    13.1.停用oracle服务: 进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止: 13.2.删除oracle: 在开始菜单中,找到oracle->Universal I ...

  6. POJ 1410 判断线段与矩形交点或在矩形内

    这个题目要注意的是:给出的矩形坐标不一定是按照左上,右下这个顺序的 #include <iostream> #include <cstdio> #include <cst ...

  7. ExtJs4学习(四):Extjs 中id与itemId的区别

       为了方便表示或是指定一个组件的名称,我们通常会使用id或者itemId进行标识命名.(推荐尽量使用itemId,这样可以减少页面唯一标识而产生的冲突) id:   id是作为整个页面的Compo ...

  8. 1.3.5、通过Method匹配

    server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...

  9. hadoop源码_hdfs启动流程_2_DataNode

    执行start-dfs.sh脚本后,集群是如何启动的? 本文阅读并注释了start-dfs脚本,以及datanode的启动主要流程流程源码. DataNode 启动流程 脚本代码分析 start-df ...

  10. Linux_multipath

    安装多路径软件 yum功能安装一下软件包 yum -y install device-mapper device-mapper-multipath 修改多路径软件运行等级为开机自启 chkconfig ...