亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

精通 Python range() 函数:从基础到高级用法

精通 Python range() 函数:从基础到高级用法

什么是 Python range?

Python 的 range() 是内置生成器,根据开始、结束和可选步长生成整数序列。省略开始值时默认为 0,步长默认为 1,序列在结束值(不包含)前停止。例如 range(5) 生成 0, 1, 2, 3, 4。该函数在 for 循环迭代中不可或缺。

本教程你将学到:

语法

range(start, stop, step)

参数

返回值

返回 range 对象,表现为整数的不可变序列。转为列表可显示完整序列。

Python range() 函数与历史

Python 3 引入 range(),取代 Python 2 的 xrange()。关键差异如下:

range()xrange()
返回不可变数字序列返回生成器对象
内存消耗与序列长度成正比极小内存;惰性生成值
适合中小范围适合大范围或无限序列
大范围因内存分配较慢大范围迭代更快

使用 range()

打印 0 到 9 的基本示例:

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

输出:

0 1 2 3 4 5 6 7 8 9

使用 start 和 stop

指定起始值偏移序列:

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

输出:

3 4 5 6 7 8 9

使用 start、stop 和 step

添加步长控制间隔:

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

输出:

3 5 7 9

正步长递增

默认步长 1,可指定任意正整数:

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

输出:

1 6 11 16 21 26

反向范围:负步长递减

负步长创建降序序列:

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

输出:

15 14 13 12 11 10 9 8 7 6

在 range() 中使用浮点数

内置 range() 仅接受整数。传入浮点数抛出 TypeError:

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

输出:

Traceback (most recent call last):
  File "python_range.py", line 1, in 
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

配合 for 循环使用 range()

常与 len() 配合遍历列表索引:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']
for i in range(len(arr_list)):
    print(arr_list[i], end=" ")

输出:

Mysql Mongodb PostgreSQL Firebase

将 range() 转为列表

print(list(range(10)))

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

在 range() 中使用字符

range() 仅支持整数,但可通过 Unicode 码点生成字母序列:

def get_alphabets(startletter, stopletter, step):
    for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
        yield chr(c)

print(list(get_alphabets("a", "h", 1)))

输出:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

访问范围元素

可通过迭代、索引或转列表获取值:

迭代

for i in range(6):
    print(i)

输出:

0 1 2 3 4 5

索引

startvalue = range(5)[0]
print("The first element in range is = ", startvalue)
secondvalue = range(5)[1]
print("The second element in range is = ", secondvalue)
lastvalue = range(5)[-1]
print("The last element in range is = ", lastvalue)

输出:

The first element in range is = 0
The second element in range is = 1
The last element in range is = 4

使用 list()

print(list(range(10)))

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

示例:用 range() 生成偶数

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

输出:

2 4 6 8 10 12 14 16 18

合并两个 range() 输出

用 itertools.chain 合并:

from itertools import chain
print("Merging two range into one")
frange = chain(range(10), range(10, 20, 1))
for i in frange:
    print(i, end=" ")

输出:

Merging two range into one
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

配合 NumPy 使用 range()

NumPy 的 arange() 类似 range() 但支持浮点步长:

语法

arange(start, stop, step)

示例

import numpy as np
for i in np.arange(10):
    print(i, end=" ")

输出:

0 1 2 3 4 5 6 7 8 9

NumPy 浮点范围

for i in np.arange(0.5, 1.5, 0.2):
    print(i, end=" ")

输出:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

因二进制浮点运算,输出有时显示长小数,可按需四舍五入。

总结

Python

  1. 精通Python函数参数:位置、关键字与默认参数
  2. Python Lambda匿名函数实战指南
  3. Python 生成器:高效迭代与进阶用例
  4. Python 闭包详解:嵌套函数如何捕获变量
  5. 精通 Python 装饰器:专家技巧增强函数
  6. 精通 Python Lambda 函数:实用示例与最佳实践
  7. Python abs() 函数:计算数字与复数的绝对值
  8. Python round() 函数详解与实战示例
  9. 精通 Python range() 函数:从基础到高级用法
  10. 精通 Python map() 函数:语法、示例与最佳实践
  11. 精通 Python enumerate():为列表、元组、字符串、字典带索引循环
  12. Python list.count() 专家指南:语法、示例与性能解析