与孩子一起学编程12章

来源:互联网 发布:盘古越狱失败程序员 编辑:程序博客网 时间:2024/05/01 07:33

列表list

>>> family = ['Mom', 'Dad', 'Junior', 'Baby']>>> luckyNumbers = [2, 7, 14, 26, 30]

family和luckyNumber都是python列表的例子,中括号里的以逗号分隔的各个项和元素。

还可以创建一个空列表,然后再向里面增加元素,这是需要使用append(),若已有元素,则追加到列表的末尾。

>>> friends = []>>> friends.append('David')>>> print friends['David']>>> 
列表里可以包含任何类型的数据,还可以包含列表,可以按元素的索引(index)来获取元素,列表索引从0开始计数
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> letters[0]'a'>>> letters[3]'d'>>> 
使用索引从列表一次获取多个元素,叫列表分片(slicing)
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> print letters[1:4]['b', 'c', 'd']>>> 
获取分片时,从从第一个索引开始,在到达第二个索引之前结束,一种方法牢记取回的项数总是两个索引数之差。还有一个有意思的地方,先写个代码
>>> print letters[1:2]['b']>>> print letters[1]b>>> print type(letters[1])<type 'str'>>>> print type(letters[1:])<type 'list'>
自己想想,问什么这样呢,一个是字符,一个是列表。分片还有以下几种简写方式,一起了解
>>> print letters[:2]['a', 'b']>>> letters[2:]['c', 'd', 'e']>>> letters[:]['a', 'b', 'c', 'd', 'e']>>> 

letters[:]得到的是整个列表的副本,这在需要修改列表,还想保留原来的列表时,会很方便。

可以使用索引 来修改某个列表元素

>>> print letters['a', 'b', 'c', 'd', 'e']>>> letters[2] = 'z'>>> print letters['a', 'b', 'z', 'd', 'e']>>> 
注意,不能用索引向列表增加新的元素
>>> letters[5] = 'f'Traceback (most recent call last):  File "<pyshell#21>", line 1, in <module>    letters[5] = 'f'IndexError: list assignment index out of range>>> 
向列表增加新元素的其他几种方法
>>> letters.append('n')>>> print letters['a', 'b', 'z', 'd', 'e', 'n']>>> 

append()向列表末尾增加一个元素,extend()向列表末尾增加多个元素,insert()向列表的某个位置增加一个元素。

>>> letters.append('n')>>> print letters['a', 'b', 'z', 'd', 'e', 'n']>>> letters[2] = 'c'>>> letters.extend(['p', 'q', 'r'])>>> print letters['a', 'b', 'c', 'd', 'e', 'n', 'p', 'q', 'r']>>> letters.insert(2, 'z')>>> print letters['a', 'b', 'z', 'c', 'd', 'e', 'n', 'p', 'q', 'r']>>> 
extend()和append()的区别,看看下面就明白了。
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> letters.extend(['f', 'g', 'h'])>>> print letters['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']>>> letters = ['a', 'b', 'c', 'd', 'e']>>> letters.append(['f', 'g', 'h'])>>> print letters['a', 'b', 'c', 'd', 'e', ['f', 'g', 'h']]>>> 
从列表删除或去除元素呢,有3种方法:remove()、del和pop()。先看看remove()
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> letters.remove('c')>>> print letters['a', 'b', 'd', 'e']>>> 
del利用索引位置从列表中删除元素
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> del letters[3]>>> print letters['a', 'b', 'c', 'e']>>> 
pop()从列表中取出最后一个元素交给你,还可以用索引取出元素
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> lastletter = letters.pop()>>> print letters['a', 'b', 'c', 'd']>>> print lastlettere>>> letters = ['a', 'b', 'c', 'd', 'e']>>> second = letters.pop(1)>>> print secondb>>> print letters['a', 'c', 'd', 'e']>>> 

搜索列表

in关键字

>>> letters = ['a', 'b', 'c', 'd', 'e']>>> if 'a' in letters:print "found 'a' in letters"found 'a' in letters>>> 'a' in lettersTrue>>> 's' in lettersFalse>>> 
True和False是逻辑表达式的返回值。

查找索引,使用index()方法,找出一个元素位于列表的什么位置

>>> letters = ['a', 'b', 'c', 'd', 'e']>>> print letters.index('d')3>>> 
列表也可以使用循环来处理,下面的代码
>>> letters = ['a', 'b', 'c', 'd', 'e']>>> for letter in letters:print letterabcde>>> 
这样不用数字列表,也可以迭代处理列表,上面的循环变量时letter。

列表里的元素也可以进行排序,sort(),reverse(),sorted()。下面一一举例来描述

>>> letters = ['a', 'b', 'c', 'd', 'e']>>> letters.sort()>>> print letters['a', 'b', 'c', 'd', 'e']>>> letters = ['c', 'a', 'b', 'e', 'd']>>> letters.sort()>>> print letters['a', 'b', 'c', 'd', 'e']>>> letters.reverse()>>> print letters['e', 'd', 'c', 'b', 'a']>>> letters.sort()>>> print letters['a', 'b', 'c', 'd', 'e']>>> letters.sort(reverse = True)>>> print letters['e', 'd', 'c', 'b', 'a']>>> 
还有个例子,列表排序后保留原来的顺序,只在列表的副本上进行排序
>>> original_list = ['Tom', 'James', 'Fred']>>> new_list = original_list[:]>>> new_list.sort()>>> print original_list['Tom', 'James', 'Fred']>>> print new_list['Fred', 'James', 'Tom']>>> 
还有个sorted()的例子
>>> original = [5, 2, 3, 1, 4]>>> newer = sorted(original)>>> print original[5, 2, 3, 1, 4]>>> print newer[1, 2, 3, 4, 5]>>> 
sorted()函数提供了原列表的一个有序副本


双重列表:数据表

先看看一个代码,每个学生的成绩使用一个列表

>>> joeMarks = [55, 63, 77, 81]>>> tomMarks = [65, 61, 67, 72]>>> bethMarks = [97, 95, 92, 88]
每个课程的成绩使用一个列表
>>> mathMarks = [55, 65, 97]>>> scienceMarks = [63, 61, 95]>>> readingMarks = [77, 67, 92]>>> spellingMarks = [81, 72, 88]
把这两个收集到一个数据结构中
>>> classMarks = [joeMarks, tomMarks, bethMarks]>>> print classMarks[[55, 63, 77, 81], [65, 61, 67, 72], [97, 95, 92, 88]]
这就是双重列表,列表元素本身又是一个列表,使用in来循环处理
>>> for studentMarks in classMarks:print studentMarks[55, 63, 77, 81][65, 61, 67, 72][97, 95, 92, 88]
从表中获取一个元素
>>> print classMarks[0][55, 63, 77, 81]>>> print classMarks[0][2]77>>> 


这样列表的内容就这些,都是很简单的基础,但使用起来就不这么简单了,是不是啊。

哦,还有,列表是可变的,数字和字符串是不可变的,不过python中还有一种不可变的列表,叫元组

>>> my_tuple = ('red', 'green', 'blue')>>> 
元组使用圆括号,而不是使用中括号。创立后元组是不可改变的,列表的操作都不能对元组使用,它一直保持不变,这一点要注意。








原创粉丝点击