range和xrange的区别
range和xrange的区别
python3里面只有range,返回结果是一个生成器,官方文档是这样描述的
class range(object):
"""
range(stop) -> range object
range(start, stop[, step]) -> range object
Return an object that produces a sequence of integers from start (inclusive)
to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
These are exactly the valid indices for a list of 4 elements.
When step is given, it specifies the increment (or decrement).
"""
def count(self, value): # real signature unknown; restored from __doc__
""" rangeobject.count(value) -> integer -- return number of occurrences of value """
return 0
def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__
"""
rangeobject.index(value, [start, [stop]]) -> integer -- return index of value.
Raise ValueError if the value is not present.
"""
return 0
range有两个方法,count和index
- count(value) 统计元素出现的次数
- index(value) 返回元素的索引
```python
a = range(10)
print(a.count(8)) # 1
print(a.index(5)) # 5
<br>
python2里面range分为range和xrange
range返回一个列表,而xrange返回一个生成器
python2关于xrange的定义
```python
class xrange(object):
"""
xrange(stop) -> xrange object
xrange(start, stop[, step]) -> xrange object
Like range(), but instead of returning a list, returns an object that
generates the numbers in the range on demand. For looping, this is
slightly faster than range() and more memory efficient.
"""
def __getattribute__(self, name): # real signature unknown; restored from __doc__
""" x.__getattribute__('name') <==> x.name """
pass
def __getitem__(self, y): # real signature unknown; restored from __doc__
""" x.__getitem__(y) <==> x[y] """
pass
def __init__(self, stop): # real signature unknown; restored from __doc__
pass
def __iter__(self): # real signature unknown; restored from __doc__
""" x.__iter__() <==> iter(x) """
pass
def __len__(self): # real signature unknown; restored from __doc__
""" x.__len__() <==> len(x) """
pass
@staticmethod # known case of __new__
def __new__(S, *more): # real signature unknown; restored from __doc__
""" T.__new__(S, ...) -> a new object with type S, a subtype of T """
pass
def __reduce__(self, *args, **kwargs): # real signature unknown
pass
def __repr__(self): # real signature unknown; restored from __doc__
""" x.__repr__() <==> repr(x) """
pass
def __reversed__(self, *args, **kwargs): # real signature unknown
""" Returns a reverse iterator. """
pass
range与xrange的比较
```python
a = range(5)
b = xrange(10)
print a, type(a)
print b, type(b)
print b[2] # 2
print b[3] # 3
print b[4] # 4
print len(b)
for i in reversed(b):
print i
<br>
运行结果
```python
[0, 1, 2, 3, 4] <type 'list'>
xrange(10) <type 'xrange'>
2
3
4
10
9
8
7
6
5
4
3
2
1
0
## 小结
- 只有在python2中才分range和xrange,python3只有range
- python2里面range返回一个列表,xrange返回一个类似生成器的xrange对象
- xrange对象的用法与列表一样,但是只是在取值时在占用内存空间(这一点类似于python3的range)
range和xrange的区别的更多相关文章
- python 基础 2.7 range与xrange的区别
#/usr/bin/python #coding=utf-8 #@Time :2017/10/25 19:22 #@Auther :liuzhenchuan #@File :range与xrange的 ...
- range和xrange的区别详解
两种用法介绍如下:1.range([start], stop[, step])返回等差数列.构建等差数列,起点是start,终点是stop,但不包含stop,公差是step.start和step是可选 ...
- range与xrange的区别
一.Python中range()与xrange()有什么区别 range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列 rang ...
- python 中range与xrange的区别
先来看看range与xrange的用法介绍 help(range)Help on built-in function range in module __builtin__: range(...) r ...
- python2中range和xrange的区别
range和xrange用法相同,不同的是xrange不是生成一个序列,而是作为一个生成器,即生成一个取出一个 相对来说,xrange比range性能优化很多,因为不需要一下子开辟一块很大的内存,特别 ...
- Python3入门系列之-----range和xrange的区别详解,你明白了吗?
前言 range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列. xrange也有相同的功能, 今天来看下它们之间的不同. range 函数说明:range([start ...
- python range() 和xrange()的区别
Help on built-in function range in module __builtin__: range(...) range(stop) -> list of integers ...
- python中range和xrange的区别
1.range生成一个列表:xrange生成一个生成器 2.用法都差不多
- ZH奶酪:Python中range和xrange的区别
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列.range示例: >>> ...
随机推荐
- [luogu1972][bzoj1878][SDOI2009]HH的项链【莫队+玄学卡常】
题目大意 静态区间查询不同数的个数. 分析 好了,成功被这道题目拉低了AC率... 打了莫队T飞掉了,真的是飞掉了QwQ. 蒟蒻想不出主席树的做法,就换成了莫队... 很多人都不知道莫队是什么... ...
- js-基本语法2
类型转换 1.直接转换 parseInt() 与 parseFloat() alert('12'+7); //弹出127 alert( parseInt('12') + 7 ); //弹出19 ale ...
- jquery扩展写法
如何制作自己的Jquery插件,内容参考学习了网上的讲解,如下 使用这两个方法 jQuery.fn.extend(object) jQuery.extend(object) jQuery.extend ...
- luogu3188/bzoj1190 梦幻岛宝珠 (分层背包dp)
他都告诉你能拆了 那就拆呗.把每个重量拆成$a*2^b$的形式 然后对于每个不同的b,先分开做30个背包 再设f[i][j]表示b<=i的物品中 容量为$ j*2^i+W\&((1< ...
- Callable和Future、FutureTask的使用
http://www.silencedut.com/2016/06/15/Callable%E5%92%8CFuture%E3%80%81FutureTask%E7%9A%84%E4%BD%BF%E7 ...
- 洛谷P2414 阿狸的打字机
题意:以trie的形式给出n个字符串,每次询问第x个字符串在第y个字符串中出现了几次. 解:总串长是n2级别的,所以不能用什么后缀自动机... [update]可以建triesam但是不知道trie上 ...
- 洛谷P3703 树点涂色
题意: 解: 发现我们每次染的都是不同的颜色,那么用lct维护的话一个颜色就会在一个splay里.染色是access. 维护每个节点到根路径上的虚边数量. 虚边的切换只会在access和link中出现 ...
- vue学习(3)
回顾昨天内容 1.let和const 2.模板字符串 `` 插变量${变量名} 3.箭头函数 function(){} == ()=>{} 1.this的指向问题 2.arguments不能使用 ...
- FluentScheduler定时器计划任务
http://www.cnblogs.com/lgxlsm/p/6734011.html 用了FluentScheduler后,再也比想用timer计时器了. FluentScheduler 是 .N ...
- django基于restframework的CBV封装
一.models数据库映射 from django.db import models # Create your models here. class Book(models.Model): titl ...