range和xrange的区别

python3里面只有range,返回结果是一个生成器,官方文档是这样描述的

  1. class range(object):
  2. """
  3. range(stop) -> range object
  4. range(start, stop[, step]) -> range object
  5. Return an object that produces a sequence of integers from start (inclusive)
  6. to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
  7. start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
  8. These are exactly the valid indices for a list of 4 elements.
  9. When step is given, it specifies the increment (or decrement).
  10. """
  11. def count(self, value): # real signature unknown; restored from __doc__
  12. """ rangeobject.count(value) -> integer -- return number of occurrences of value """
  13. return 0
  14. def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__
  15. """
  16. rangeobject.index(value, [start, [stop]]) -> integer -- return index of value.
  17. Raise ValueError if the value is not present.
  18. """
  19. return 0

range有两个方法,count和index
- count(value) 统计元素出现的次数
- index(value) 返回元素的索引
```python
a = range(10)

print(a.count(8)) # 1

print(a.index(5)) # 5


  1. <br>
  2. python2里面range分为range和xrange
  3. range返回一个列表,而xrange返回一个生成器
  4. python2关于xrange的定义
  5. ```python
  6. class xrange(object):
  7. """
  8. xrange(stop) -> xrange object
  9. xrange(start, stop[, step]) -> xrange object
  10. Like range(), but instead of returning a list, returns an object that
  11. generates the numbers in the range on demand. For looping, this is
  12. slightly faster than range() and more memory efficient.
  13. """
  14. def __getattribute__(self, name): # real signature unknown; restored from __doc__
  15. """ x.__getattribute__('name') <==> x.name """
  16. pass
  17. def __getitem__(self, y): # real signature unknown; restored from __doc__
  18. """ x.__getitem__(y) <==> x[y] """
  19. pass
  20. def __init__(self, stop): # real signature unknown; restored from __doc__
  21. pass
  22. def __iter__(self): # real signature unknown; restored from __doc__
  23. """ x.__iter__() <==> iter(x) """
  24. pass
  25. def __len__(self): # real signature unknown; restored from __doc__
  26. """ x.__len__() <==> len(x) """
  27. pass
  28. @staticmethod # known case of __new__
  29. def __new__(S, *more): # real signature unknown; restored from __doc__
  30. """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
  31. pass
  32. def __reduce__(self, *args, **kwargs): # real signature unknown
  33. pass
  34. def __repr__(self): # real signature unknown; restored from __doc__
  35. """ x.__repr__() <==> repr(x) """
  36. pass
  37. def __reversed__(self, *args, **kwargs): # real signature unknown
  38. """ Returns a reverse iterator. """
  39. 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

  1. <br>
  2. 运行结果
  3. ```python
  4. [0, 1, 2, 3, 4] <type 'list'>
  5. xrange(10) <type 'xrange'>
  6. 2
  7. 3
  8. 4
  9. 10
  10. 9
  11. 8
  12. 7
  13. 6
  14. 5
  15. 4
  16. 3
  17. 2
  18. 1
  19. 0

## 小结
- 只有在python2中才分range和xrange,python3只有range
- python2里面range返回一个列表,xrange返回一个类似生成器的xrange对象
- xrange对象的用法与列表一样,但是只是在取值时在占用内存空间(这一点类似于python3的range)

range和xrange的区别的更多相关文章

  1. python 基础 2.7 range与xrange的区别

    #/usr/bin/python #coding=utf-8 #@Time :2017/10/25 19:22 #@Auther :liuzhenchuan #@File :range与xrange的 ...

  2. range和xrange的区别详解

    两种用法介绍如下:1.range([start], stop[, step])返回等差数列.构建等差数列,起点是start,终点是stop,但不包含stop,公差是step.start和step是可选 ...

  3. range与xrange的区别

    一.Python中range()与xrange()有什么区别 range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列 rang ...

  4. python 中range与xrange的区别

    先来看看range与xrange的用法介绍 help(range)Help on built-in function range in module __builtin__: range(...) r ...

  5. python2中range和xrange的区别

    range和xrange用法相同,不同的是xrange不是生成一个序列,而是作为一个生成器,即生成一个取出一个 相对来说,xrange比range性能优化很多,因为不需要一下子开辟一块很大的内存,特别 ...

  6. Python3入门系列之-----range和xrange的区别详解,你明白了吗?

    前言 range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列. xrange也有相同的功能, 今天来看下它们之间的不同. range 函数说明:range([start ...

  7. python range() 和xrange()的区别

    Help on built-in function range in module __builtin__: range(...) range(stop) -> list of integers ...

  8. python中range和xrange的区别

    1.range生成一个列表:xrange生成一个生成器 2.用法都差不多  

  9. ZH奶酪:Python中range和xrange的区别

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

随机推荐

  1. 【HDU - 4341】Gold miner(分组背包)

    BUPT2017 wintertraining(15) #8B 题意 给出每个黄金的坐标.价值及耗时,同一方向的黄金只能依次取,求T时间内收获的最大值. 题解 同一方向,物品前缀和构成的组合,相当于是 ...

  2. 【BZOJ5321】[JXOI2017]加法(贪心)

    [BZOJ5321][JXOI2017]加法(贪心) 题面 BZOJ 洛谷 题解 显然二分答案,算一下每个点至少要覆盖的次数.从左往右考虑如果这个点覆盖次数不够,就会选择覆盖这个点的.右端点最大的线段 ...

  3. hexo从零开始

    部署Hexo Hexo官方文档 新建一个文件夹,比如,Blog,然后进入该文件夹下: npm install hexo-cli -g hexo version 安装依赖包 npm install 配置 ...

  4. LVS负载均衡集群(DR)

    -----构建DR模式的LVS群集----- --client---------------------LVS------------------------WEB1----------------- ...

  5. [FJOI2016]神秘数(脑洞+可持久化)

    题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...

  6. 微信小程序支付(PHP后端)

    1.申请开通小程序支付,我们正式开通的微信支付是在微信公众平台上,我们需要绑定之前的微信商户平台即可,这一点不过多强调 2.小程序支付开发步骤 (1).统一下单 大家看到微信的统一下单接口密密麻麻的一 ...

  7. MessageDigest来实现数据加密

    MessageDigest MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值. M ...

  8. js常用的正则表达式

    一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ ...

  9. A1072. Gas Station

    A gas station has to be built at such a location that the minimum distance between the station and a ...

  10. [luogu4309][最长上升子序列]

    题目链接 思路 因为这些数字是从小到大加进去的,所以以当前数字结尾的最长上升子序列可以从前面位置的任何一个数字转移过来.所以只要能知道每个数字最终位于哪个位置就行了. 没想到出了treap还有什么办法 ...