>;>;>; a
['spam', 'eggs', 100, 1234]
像字符串一样,链表也以零开始,可以被切片,联接,等等:
>;>;>; a[0]
'spam'
>;>;>; a[3]
1234
>;>;>; a[-2]
100
>;>;>; a[1:-1]
['eggs', 100]
>;>;>; a[] + ['bacon', 2*2]
['spam', 'eggs', 'bacon', 4]
>;>;>; 3*a[] + ['Boe!']
['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boe!']
与不变的字符串不同,链表可以改变每个独立元素的值:
>;>;>; a
['spam', 'eggs', 100, 1234]
>;>;>; a[2] = a[2] + 23
>;>;>; a
['spam', 'eggs', 123, 1234]
可以进行切片操作,甚至还可以改变链表的大小:
>;>;>; # Replace some items:
... a[0] = [1, 12]
>;>;>; a
[1, 12, 123, 1234]
>;>;>; # Remove some:
... a[0] = []
>;>;>; a
[123, 1234]
>;>;>; # Insert some:
... a[1] = ['bletch', 'xyzzy']
>;>;>; a
[123, 'bletch', 'xyzzy', 1234]
>;>;>; a[] = a # Insert (a copy of) itself at the beginning
>;>;>; a
[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
内置函数len()也同样可以用于链表:
>;>;>; len(a)
8
它也可以嵌套链表(在链表中创建其它链表),例如:
>;>;>; q = [2, 3]
>;>;>; p = [1, q, 4]
>;>;>; len(p)
3
>;>;>; p[1]
[2, 3]
>;>;>; p[1][0]
2
>;>;>; p[1].append('xtra') # See section 5.1
>;>;>; p
[1, [2, 3, 'xtra'], 4]
>;>;>; q
[2, 3, 'xtra']
注意最后一个例子,p[1]和q实际上指向同一个对象!我们在后面会讲到对象语法。
3.2 开始编程
当然,我们可以用Python做比2加2更复杂的事。例如,我们可以用以下的方法输出菲波那契(Fibonacci)序列的子序列:
>;>;>; # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>;>;>; while b < 10:
... print b
... a, b = b, a+b
...
1
1
2
3
5
8
示例中介绍了一些新功能:
第一行包括了复合参数:变量a和b同时被赋值为0和1。最后一行又一次使用了这种技术,证明了在赋值之前表达式右边先进行了运算。右边的表达式从左到右运算。
上一页 1 2 3 4 5 6 7 8 9 10 1112 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 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 指南 一个 可以 Python 模块 文件 方法 函数 对象 字符串 |
注册
个人空间
