前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python - 详解 range()

Python - 详解 range()

作者头像
小菠萝测试笔记
发布2021-08-06 10:26:36
7010
发布2021-08-06 10:26:36
举报

介绍

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

两种语法格式

代码语言:javascript
复制
range(stop)
  • 表示区间 [0, stop) 内的整数序列
  • 该区间从 0 开始、到 stop 结束,不包含 stop
代码语言:javascript
复制
range(start, stop[, step]) 
  • 表示区间 [start, stop) 内的整数序列
  • 该区间从 start 开始、到 end 结束,不包含 end
  • step 是步进,默认是 1
step 的取值规则
  • 如果 step 为正值,确定 range 某个值的公式为 r[i] = start + step*i 其中 i >= 0r[i] < stop
  • 如果 step 为负值,确定 range 某个值的公式仍然为 r[i] = start + step*i,但限制条件改为 i >= 0r[i] > stop
返回值

都是 range 实例对象

一些简单的栗子

代码语言:javascript
复制
>>> 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、索引、切片等特性

代码语言:javascript
复制
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 对象是否相等是将其作为序列来比较

代码语言:javascript
复制
r1 = range(0, 4, 2)
r2 = range(0, 3, 2)
print(r1 == r2)


# 输出结果
True

循环遍历 range

代码语言:javascript
复制
for item in range(3):
    print(item)


# 输出结果
0
1
2
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 两种语法格式
    • step 的取值规则
      • 返回值
      • 一些简单的栗子
      • range 的优势
      • range 的特性
      • ==、!= 操作
      • 循环遍历 range
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档