pangblog

列表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 lastletter
e
>>> letters = [\'a\', \'b\', \'c\', \'d\', \'e\']
>>> second = letters.pop(1)
>>> print second
b
>>> 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 letters
True
>>> \'s\' in letters
False
>>> 

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 letter

	
a
b
c
d
e
>>> 

这样不用数字列表,也可以迭代处理列表,上面的循环变量时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\')
>>> 

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






 


分类:

技术点:

相关文章: