zoukankan      html  css  js  c++  java
  • python2中range和xrange的异同

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

    1. >>> range(5) 
    2. [0, 1, 2, 3, 4] 
    3. >>> range(1,5) 
    4. [1, 2, 3, 4] 
    5. >>> range(0,6,2)
    6. [0, 2, 4]


    xrange
        函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。
    xrange示例: 

    1. >>> xrange(5)
    2. xrange(5)
    3. >>> list(xrange(5))
    4. [0, 1, 2, 3, 4]
    5. >>> xrange(1,5)
    6. xrange(1, 5)
    7. >>> list(xrange(1,5))
    8. [1, 2, 3, 4]
    9. >>> xrange(0,6,2)
    10. xrange(0, 6, 2)
    11. >>> list(xrange(0,6,2))
    12. [0, 2, 4]


        由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:

    1. for i in range(0, 100): 
    2. print i 
    3. for i in xrange(0, 100): 
    4. print i 


        这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:

    1. = range(0,100) 
    2. print type(a) 
    3. print a 
    4. print a[0], a[1] 


        输出结果:

    1. <type 'list'>
    2. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    3. 0 1


        而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:

    1. = xrange(0,100) 
    2. print type(a) 
    3. print a 
    4. print a[0], a[1] 


        输出结果:

    1. <type 'xrange'>
    2. xrange(100)
    3. 0 1


        所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。

  • 相关阅读:
    WPF 使用 Direct2D1 画图 绘制基本图形
    WPF 使用 Direct2D1 画图 绘制基本图形
    dot net core 使用 IPC 进程通信
    dot net core 使用 IPC 进程通信
    win2d 图片水印
    win2d 图片水印
    Java实现 LeetCode 240 搜索二维矩阵 II(二)
    PHP closedir() 函数
    PHP chroot() 函数
    PHP chdir() 函数
  • 原文地址:https://www.cnblogs.com/leonardchen/p/7795210.html
Copyright © 2011-2022 走看看