pin_drop当前位置:知识文库 ❯ 图文

Python range()函数

概述

range() 是 Python 内置函数,用于生成一个整数序列。它常与 for 循环配合使用,控制循环次数。range() 返回的是一个可迭代对象,不会一次性生成所有数字,内存效率极高。


语法

代码示例

range(stop)
range(start, stop)
range(start, stop, step)
参数 说明 默认值
start 起始值(包含) 0
stop 结束值(不包含) 必填
step 步长 1

基本用法

一个参数:range(stop)

代码示例

for i in range(5):
    print(i, end=" ")

输出:

代码示例

0 1 2 3 4

两个参数:range(start, stop)

代码示例

for i in range(2, 7):
    print(i, end=" ")

输出:

代码示例

2 3 4 5 6

三个参数:range(start, stop, step)

代码示例

for i in range(0, 10, 2):
    print(i, end=" ")

输出:

代码示例

0 2 4 6 8

负步长

代码示例

for i in range(10, 0, -1):
    print(i, end=" ")

输出:

代码示例

10 9 8 7 6 5 4 3 2 1

range 与列表对比

特性 range() list
内存占用 极小(惰性生成) 大(全部存储)
类型 range 对象 list
支持索引
支持切片
可修改

代码示例

r = range(1000000)
print(f"range 内存极小")
l = list(range(1000000))
print(f"list 占用大量内存")

常见应用场景

重复执行N次

代码示例

for _ in range(3):
    print("Hello!")

生成索引序列

代码示例

fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
    print(f"{i}: {fruits[i]}")

倒序遍历

代码示例

for i in range(5, 0, -1):
    print(i, end=" ")

输出:

代码示例

5 4 3 2 1

注意事项

⚠️ stop 不包含range(5) 生成 0-4,不包含 5。

⚠️ 步长不能为零range(0, 5, 0) 会抛出 ValueError

⚠️ 惰性求值range() 不会立即生成所有数字,需要时才计算。


小结

  • range(stop):从 0 到 stop-1

  • range(start, stop):从 start 到 stop-1

  • range(start, stop, step):按步长生成

  • 负步长:实现倒序,内存效率极高


练习题

练习1

使用 range() 生成 1 到 100 中所有能被 3 整除的数字列表。

练习2

使用 range()for 循环,打印一个 5 行的等腰三角形星号图案。

常见问题

range()返回的是列表吗?

不是。range() 返回的是一个 range 对象,它是一个可迭代对象,不会一次性生成所有数字。可以通过 list() 将其转换为列表。

range() 的 stop 参数包含在内吗?

不包含。range(5) 生成的是 0、1、2、3、4,不包含 5。这是 Python 的设计惯例。

range() 比 list 更节省内存吗?

是的。range() 采用惰性求值,只在需要时计算数字,内存占用极小。而 list 会将所有元素存储在内存中。当需要大量数字时,range() 的内存优势非常明显。

可以用负步长实现倒序吗?

可以。使用负步长参数,如 range(10, 0, -1) 会生成 10、9、8、7、6、5、4、3、2、1。注意 start 要大于 stop。

range() 的步长可以为0吗?

不可以。步长为0会导致无限循环,Python 会抛出 ValueError 异常。步长必须是非零整数。

标签: range 内置函数 for循环 序列生成 惰性求值 Python基础

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python for循环 下一篇: Python break语句

poll相关推荐