这次出于疏忽,忘记在晚上断网之前打开 python 中文教程的页面了,11 点实在是早,也不想干别的,也就是想学学 python,还好我手头上有保存一份官方的英文教程,就拿出来看了。
虽然以前玩游戏经常都是看英语,当时也很喜欢英语,不过现在觉得英语看的多了眼花,实在是没有咱们简体中文这种舒服的感觉,方方正正的,果然汉字还是很好看,哈哈!
本人承认本人英语并不是很好很好,只是刚好过了个 CET-4 的水平,计算机英语的水平也是靠积累来的。
就这样,看了下英文版的官方文档,居然有了重大发现!
某 pythondoc 的官方教程翻译版对于 range 的说法和这个 python 官方原版英文教程的说法不一样!
人家官方说 range 函数只是生成一个列表,那边的中文翻译居然说是生成一个链表。。。。
果然还是看原版教程才不会被坑啊。。。
不废话了,讲讲正题。
range 这个函数可以一次性生成一个数值序列列表,列表里的数值依次递增
比如这样1
210) range(
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
看着这玩意,再想想前面的 for 循环和 while 循环,貌似发现了什么
果然,人家官方教程讲出来了,这玩意解决了 foreach 语句的计数器问题1
2
3
4
5
6
7
8
9
10
11'Mary', 'had', 'a', 'little', 'lamb'] a = [
a
['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
print i, a[i]
0 Mary
1 had
2 a
3 little
4 lamb
原来一直以为 foreach 语句的最大弊端是不能够控制计数变量,所以在 java 里面就算有这个语句也基本不用,但是 python 很好的解决了这个问题。
range 函数还可以生成等差数列1
20, 15, 2) range(
[0, 2, 4, 6, 8, 10, 12, 14]
进而可以很轻松的就进行这样的特殊操作1
2
3
4
5
6
7
8
9'abcdefghijklmn' a =
for i in range(0, len(a), 3):
print i, a[i]
0 a
3 d
6 g
9 j
12 m
range 函数生成的列表不一定要从零开始哦1
25, 14) range(
[5, 6, 7, 8, 9, 10, 11, 12, 13]
这样,就可以总结出三个 range 函数的三种参数形式了
range(length)
range(start, length)
range(start, length, delta)
不管怎么说,这个 range 函数我感觉真的是 python 的一个让我眼前一亮的东西,配合循环一起食用效果更佳!
附上一个自己写的用来玩的简单冒泡排序1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
245, 4, 7, 2, 6, 3, 1, 8] a = [
for i in range(len(a)-1):
for j in range(len(a)-1-i):
if a[j] > a[j+1]:
1] t = a[j+
1] = a[j] a[j+
a[j] = t
print a
[4, 5, 7, 2, 6, 3, 1, 8]
[4, 5, 2, 7, 6, 3, 1, 8]
[4, 5, 2, 6, 7, 3, 1, 8]
[4, 5, 2, 6, 3, 7, 1, 8]
[4, 5, 2, 6, 3, 1, 7, 8]
[4, 2, 5, 6, 3, 1, 7, 8]
[4, 2, 5, 3, 6, 1, 7, 8]
[4, 2, 5, 3, 1, 6, 7, 8]
[2, 4, 5, 3, 1, 6, 7, 8]
[2, 4, 3, 5, 1, 6, 7, 8]
[2, 4, 3, 1, 5, 6, 7, 8]
[2, 3, 4, 1, 5, 6, 7, 8]
[2, 3, 1, 4, 5, 6, 7, 8]
[2, 1, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]