Python的range()

本文详细解析了Python中range函数的使用方法,包括其参数含义、类型、有趣的应用场景及实现代理实现,还涉及如何计算最大公约数、最小公倍数的技巧。

函数原型:range(start, end, scan):

参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);

             end:技术到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

             scan:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

 
range的类型:Python 2.x range() produced a list, and xrange() returned an iterator - a sequence object. in Python 3.x, the range() function got its own type.
有趣的用法: 倒序 for i in range ( 99 , 0 , - 1 ) :
浮点数的range:
>>> # Note: All arguments are required.
>>> # We're not fancy enough to implement all.
>>> def frange(start, stop, step):
...     i = start
...     while i < stop:
...         yield i
...         i += step
...
>>> for i in frange(0.5, 1.0, 0.1):
...         print(i)
...
0.5
0.6
0.7
0.8
0.9
1.0
 
求最大公约数,最小公倍数: (5-15.py)
def maxpub(a,b):
	
	a = int(a)
	b = int(b)
	if a>=b:
		small = b
		large = a
	else:
		small = a
		large = b
	pub = 1
	
	#should include small in range
	#range(2,small+1)
	for i in range(2,small+1):
		i = i
		if (small%i==0 and large%i == 0):
			pub = pub * i
			small = small/i
			large = large/i
			continue
		else:
			i = i + 1
	return pub

def smallpub(a,b):
	a = int(a)
	b = int(b)
	return a*b/maxpub(a,b)
 
### 3.1 range 函数的基本用法 Python 中的 `range()` 函数用于生成一个整数序列,常用于 `for` 循环中控制迭代次数。其基本语法为: ```python range(start, stop[, step]) ``` 其中: - `start`:起始值,默认为 0; - `stop`:终止值,不包含在序列中; - `step`:步长,默认为 1。 例如: ```python for i in range(5): print(i) ``` 输出为: ``` 0 1 2 3 4 ``` 当使用 `range(1, 5)` 时,生成的序列是 `[1, 2, 3, 4]`;使用 `range(1, 5, 2)` 则生成 `[1, 3]` [^2]。 ### 3.2 range 对象的特性 `range()` 函数返回的是一个 `range` 类型的对象,它属于不可变序列类型,与列表和元组并列为基础序列类型之一。该对象不立即生成完整的整数列表,而是按需计算元素,因此内存占用恒定,与序列长度无关 [^3]。 例如: ```python r = range(1, 10, 2) print(r) # 输出 range(1, 10) print(list(r)) # 输出 [1, 3, 5, 7, 9] ``` 此外,`range` 对象支持常见的序列操作,如索引、切片、`in` 和 `not in` 判断等,但不支持加法拼接和乘法重复操作 [^1]。 ### 3.3 range 与迭代器的关系 `range()` 函数返回的是一个可迭代对象,而不是迭代器。它本身不是迭代器,但在需要时可以通过 `iter()` 函数转换为迭代器。这种设计避免了不必要的资源消耗,使其在循环等场景中更高效 [^3]。 例如: ```python r = range(1, 5) it = iter(r) print(next(it)) # 输出 1 print(next(it)) # 输出 2 ``` ### 3.4 range 的应用场景 `range()` 函数广泛应用于循环结构中,尤其适合控制循环次数或生成索引值。例如: ```python for i in range(1, 6, 2): print(i, end=' ') ``` 输出为: ``` 1 3 5 ``` 还可以结合 `zip()` 函数同时遍历多个 `range` 序列: ```python for i in zip(range(1, 6, 2), range(2, 7, 2)): print(i, end=' ') ``` 输出为: ``` (1, 2) (3, 4) (5, 6) ``` 这种用法展示了 `range()` 作为“初级生产者”的灵活性,它生成的序列可以直接用于多种数据处理场景 。 ### 3.5 性能与内存优势 由于 `range` 对象只存储起始值、终止值和步长,并在需要时动态计算元素,因此无论其表示的序列有多长,其内存占用始终保持不变。这使得 `range()` 在处理大规模数据时具有显著的内存优势 [^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值