首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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 类型不支持这两个操作的原因了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201209A0H0T300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券