您的位置:首页 > 编程语言 > Python开发

Python xrange与range的区别

2016-09-03 12:30 399 查看
range 前面小节已经说明了,range([start,] stop[,step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。

比如:

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
完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

01
>>>
xrange
(
5
)
02
xrange
(
5
)
03
>>>
list
(
xrange
(
5
))
04
[
0
,
1
,
2
,
3
,
4
]
05
>>>
xrange
(
1
,
5
)
06
xrange
(
1
,
5
)
07
>>>
list
(
xrange
(
1
,
5
))
08
[
1
,
2
,
3
,
4
]
09
>>>
xrange
(
0
,
6
,
2
)
10
xrange
(
0
,
6
,
2
)
11
>>>
list
(
xrange
(
0
,
6
,
2
))
12
[
0
,
2
,
4
]
由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

xrange 和 range 这两个基本上都是在循环的时候用。

1
for
i
in
range
(
0
,
100
):
2
print
i
3
4
for
i
in
xrange
(
0
,
100
):
5
print
i
这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:

1
a
=
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
a
=
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吧,除非你是要返回一个列表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python