介绍

  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. MindSpore自定义模型损失函数

    技术背景 损失函数是机器学习中直接决定训练结果好坏的一个模块,该函数用于定义计算出来的结果或者是神经网络给出的推测结论与正确结果的偏差程度,偏差的越多,就表明对应的参数越差.而损失函数的另一个重要性在 ...

  2. Docker与k8s的恩怨情仇(二)—用最简单的技术实现“容器”

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上次我们说到PaaS的发展历史,从Cloud Foundry黯然退场,到Docker加冕,正是Docker& ...

  3. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲. 本文章主要讲述Docker.Jen ...

  4. 简单聊聊Ehcache缓存

    最近工作没有那么忙,有时间来写写东西.今年的系统分析师报名已经开始了,面对历年的真题,真的难以入笔,所以突然对未来充满了担忧,还是得抓紧时间学习技术. 同事推了一篇软文,看到了这个Ehcache,感觉 ...

  5. 复习Spring第四课---Spring对国际化的支持

    其实国际化这东西很少使用,之前也就是粗略的学了下,趁今天有空,拿出来稍微写写.以前学android开发的时候,类似于多语言的版本.差别就是一个是手机打开,一个是浏览器打开,本质是一样的. 在Sprin ...

  6. 通过UnityWebRequest得到的纹理转精灵

    private IEnumerator GetImage(string url, Image fileImage) { UnityWebRequest WebRequest = new UnityWe ...

  7. 六、JavaSE语言基础之数组

    一维数组(关键字[]) 关于数组的一些概念: 数组是多个基本数据有机组合形成一个复杂数据,是一个引用数据类型数据. 数组:装指定数量元素类型相同的数据的容器. 元素:在数组中,数组中的每个数据称之为数 ...

  8. 11、gitlab和Jenkins整合(1)

    1.在jenkins上安装git: 因为jenkins需要在gitlab上拉取代码: 具体的git安装,参考"4.git和gitlab的配置--4.2.git编译安装:": 2.在 ...

  9. 使用Dice loss实现清晰的边界检测

    ​ 前言: 在深度学习和计算机视觉中,人们正在努力提取特征,为各种视觉任务输出有意义的表示.在一些任务中,我们只关注对象的几何形状,而不管颜色.纹理和照明等.这就是边界检测的作用所在. 关注公众号CV ...

  10. CentOS-Docker搭建MinIO(单点)

    下载镜像 $ docker pull minio/minio 创建相关目录 $ mkdir /home/minio/data /home/minio/config -p 运行镜像(自定义Access和 ...