【Python面试】 说说Python中xrange和range的区别?

简介: 公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!


小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。


废话不多说,开始今天的题目:


问:说说Python中xrange和range的区别?

答:range()和xrange()都是在循环中使用,输出结果一样。


range()返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)。


xrange()则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少。因而性能非常好,所以尽量用xrange吧。


在python3 中没有xrange,只有range。range和python2 中的xrange()一样。


下面分别来说说这两者的用法:


1、range()


range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。


起点是start,终点是stop,但不包含stop,公差是step。start和step是可选项,没给出start时,从0开始;没给出step时,默认公差为1。


range示例:

>>> range(10) #起点是0,终点是10,但是不包括10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10) #起点是1,终点是10,但是不包括10
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2) #起点是1,终点是10,步长为2
[1, 3, 5, 7, 9]
>>> range(0,-10,-1) #起点是1,终点是10,步长为-1
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0,-10,1) #起点是0,终点是-10,终点为负数时,步长只能为负数,否则返回空
[]
>>> range(0) #起点是0,返回空列表
[]
>>> range(1,0) #起点大于终点,返回空列表
[]

2、xrange()


xrange与range类似,只是返回的是一个"xrange object"生成器对象,而非数组list。


xrange示例:

>>> xrange(6)
xrange(6) # 注意:这里输出的和range就不同喽
>>> list(xrange(6))
[0, 1, 2, 3, 4, 5]
>>> xrange(1, 6)
xrange(1, 6)
>>> list(xrange(1, 6))
[1, 2, 3, 4, 5]
>>> xrange(0,6,2)
xrange(0, 6, 2)
>>> list(xrange(0, 6, 2))
[0, 2, 4]

这两个基本上都是在循环的时候用:

for i in range(0, 100):
  print i
for i in xrange(0, 100):
  print i

再一次提醒:xrange()函数在Python3中已经取消。在python3中range()这种实现被移除了,保留了xrange()的实现,且将xrange()重新命名成range()。所以Python3不能使用xrange(),只能使用range()


如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!


相关文章
|
1天前
|
开发工具 Python
Python中return和yield的区别,面试官不讲武德
Python中return和yield的区别,面试官不讲武德
|
1天前
|
机器学习/深度学习 数据采集 自然语言处理
python函数参数的传递、带星号参数的传递,2024年大厂Python高级面试题分享
python函数参数的传递、带星号参数的传递,2024年大厂Python高级面试题分享
|
1天前
|
消息中间件 前端开发 Java
java面试刷题软件kafka和mq的区别面试
java面试刷题软件kafka和mq的区别面试
|
2天前
|
设计模式 API 数据格式
腾讯面试官问我适配器和桥接器的区别?
腾讯面试官问我适配器和桥接器的区别?
7 0
|
2天前
|
开发者 索引 Python
【Python 基础】remove、del和pop有什么区别?
【5月更文挑战第8天】【Python 基础】remove、del和pop有什么区别?
|
2天前
|
存储 Python
【Python 基础】“func”和“ func()”有什么区别?
【5月更文挑战第6天】【Python 基础】“func”和“ func()”有什么区别?
|
2天前
|
Python
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
2天前
|
索引 Python
【Python 基础】解释Range函数
【5月更文挑战第6天】【Python 基础】解释Range函数
|
2天前
|
Python
【Python 基础】“is”和“==”有什么区别?
【5月更文挑战第6天】【Python 基础】“is”和“==”有什么区别?
|
2天前
|
Python
【Python 基础】列表(list)和元组(tuple)有什么区别?
【5月更文挑战第6天】【Python 基础】列表(list)和元组(tuple)有什么区别?