python筆記7-range和xrange
阿新 • • 發佈:2019-01-07
轉載於: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
i
in
range
(
0
,
100
):
print
i
for
i
in
xrange
(
0
,
100
):
print
i
|
這兩個輸出的結果都是一樣的,實際上有很多不同,range會直接生成一個list物件:
1 2 3 4 |
a
=
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 |
a
=
xrange
(
0
,
100
)
print
type
(a)
print
a
print
a[
0
], a[
1
]
|
結果如下:
1 2 3 |
<
type
'xrange'
>
xrange
(
100
)
0
1
|