range 类

发布时间 2023-06-04 11:21:38作者: sangern

range 类型相比常规 list 或 tuple 的优势在于一个 range 对象总是占用固定数量的(较小)内存,不论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的值)。

# class range(object):
# range(stop) -> range object
# range(start, stop[, step]) -> range object

my_range = range(20)
my_range2 = range(17, 35, 2)

print(my_range.start, my_range.stop, my_range.step)
print("my_range中2出现的次数--->", my_range.count(2))
print("my_range中100出现的次数--->", my_range.count(100))
print("my_range中 6 的索引是--->", my_range.index(6))

print("my_range __bool__()--->", my_range.__bool__())
print("my_range 长度是--->", len(my_range))

# __reversed__ :Return a reverse iterator
print("my_range 翻转--->", tuple(my_range.__reversed__()))  # 转换为元组

print("my_range中 下标为7的元素是--->", my_range[7])
print("my_range中 下标 [3:6] 的元素是--->", my_range[3:6])  # range(3, 6)   返回的仍然是range

print("my_range2中 [3:6] 的元素是--->", my_range2[3:6])  # range(23, 29, 2)

print("my_range[19]==my_range2[1]--->", my_range[19] == my_range2[1])
# 相同的值序列就认为它们是相等的
# 结果相等的两个 range 对象可能会具有不同的 start, stop 和 step 属性