1. 程式人生 > >python筆記7-range和xrange

python筆記7-range和xrange

轉載於:https://www.cnblogs.com/xiezhiyang/p/6613094.html

range 函式說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長,生成一個序列。
range示例:

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

  

     xrange 函式說明:用法與range完全相同,所不同的是生成的不是一個數組,而是一個生成器。
xrange示例:

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

  

      由上面的示例可以知道:要生成很大的數字序列的時候,用xrange會比range效能優很多,因為不需要一上來就開闢一塊很大的記憶體空間,這兩個基本上都是在迴圈的時候用:

 

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

  這兩個輸出的結果都是一樣的,實際上有很多不同,range會直接生成一個list物件:

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

  輸出結果:

1 2 3 < type  'list' > [ 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 ] 0  1

  

      而xrange則不會直接生成一個list,而是每次呼叫返回其中的一個值:

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

  結果如下:

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