Python列表干货:创建数字列表:range()函数用法

本文介绍了Python的range()函数,用于创建整数列表,常用于for循环。详细解析了start、stop、step参数,强调其不可变性、接受整数参数、可迭代但不可修改的特点,并通过示例展示了如何创建递减列表、数字列表以及遍历操作。同时,讨论了range作为不可变序列,为何不支持加法和乘法操作,归因于保持等差数列结构的需要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python range() 函数可创建一个整数列表,一般用在 for 循环中。

语法:

range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0,5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0,5) 等价于 range(0, 5, 1)

对于 range() 函数,有几个注意点:

(1)它表示的是左闭右开区间;

(2)它接收的参数必须是整数,可以是负数,但不能是浮点数等其它类型;

(3)它是不可变的序列类型,可以进行判断元素、查找元素、切片等操作,但不能修改元素;

(4)它是可迭代对象,却不是迭代器。

for i in range(2,11,2):
      print(i)

输出:

2 
4 
6
8
10

还可以递减输出

for i in range(11,1,-4):
    print(i)

输出:

11
7
3

创建数字列表:

使用list()函数将range()的结果直接转化成列表。

print(list(range(2,11,2)))

输出:

[2,4,6,8,10]

遍历一个列表list:

list=[1,2,3,4,5,6,7]
for i in range(len(list)):
   print(list[i])

输出:

1
2
3
4
5
6
7

range()函数能够创建任何需要的数字集,创建一个包含前10个整数的平方。

squares=[]   #创建一个空列表
for value in range(1,11):
    square=value**2   #square临时变量
    squares.append(square)  #append()函数增加列表元素
print(squares)   #此处不需要缩进

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

为了使代码更加简洁,可以选择不使用临时变量square

squares=[]
for in vaue range(1,11):
    squares.append(value**2)
print(squares)

range()函数的不可修改性

三种基本序列类型:列表(list)、元组(tup)、范围对象(range)。range是和列表与元组有着相同地位的基础序列。除了range,字符串也是不可改变的序列类型。

range序列的特殊性:

普通序列支持12种操作,range只支持10种,不支持进行加法拼接和乘法重复。

range(2)+range(3)
TypeError: unsupported operand type(s) for +: 'range' and 'range'
range(2)*2
TypeError: unsupported operand type(s) for *: 'range' and 'int'

那么问题来了:同样是不可变序列,为什么字符串和元组就支持上述两种操作,而偏偏 range 序列不支持呢?虽然不能直接修改不可变序列,但我们可以将它们拷贝到新的序列上进行操作啊,为何 range 对象连这都不支持呢?

官方的回答:

…due to the fact that range objects can only represent sequences that follow a strict pattern and repetition and concatenation will usually violate that pattern.

原因是 range 对象仅仅表示一个遵循着严格模式的序列,而重复与拼接通常会破坏这种模式…

问题的关键就在于 range 序列的 pattern,它表示的就类似于等差数列,拼接两个等差数列,或者重复拼接一个等差数列,其它修改动作也会破坏等差数列结构,所以这就是为啥 range 类型不支持这两个操作的原因了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值