什么是列表
list(列表)是一种有序的数据集合。
举例说明,在交互式环境中输入下面的内容,其中 courses 就是一个列表:
>>> courses = ['Linux', 'Python', 'Vim', 'C++']
>>> courses.append('PHP')
>>> courses
['Linux', 'Python', 'Vim', 'C++', 'PHP']
首先我们建立了一个列表 courses。然后调用列表的方法 courses.append('PHP') 添加元素PHP 到列表末尾。你可以看到元素字符串 PHP 已经添加到列表的末端了。
列表中的索引类似 C 语言中数组的访问索引,可以通过索引访问到每一个列表的元素,第一个元素的索引为 0,最后一个元素的索引可以使用 -1 进行标示,这一点与上一节中的字符串的索引完全相同。
>>>
>>> courses[0]
'Linux'
>>> courses[-1]
'PHP'
>>> courses[-2]
'C++'
>>> courses[9]
Traceback (most recent call last):
File"<stdin>", line 1, in <module>
IndexError: list index out of range
超出索引的最大数字范畴,会出现越界,抛出 IndexError 异常,回忆下上一节的异常的内容。
如何知道列表中元素的数量呢,可以使用 len():
>>> len(courses)
5
列表操作
上面的例子中我们初步接触到列表的最基本操作 append(),列表是有序的,所以 append() 就是在列表的末尾添加新的元素。
有些时候我们需要将数据插入到列表的任何位置,这时我们可以使用列表的 insert() 方法。
>>> courses.insert(0, 'Java')
>>> courses
['Java', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
>>> courses.insert(1, 'Ruby')
>>> courses
['Java', 'Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
列表方法 count(s) 会返回列表元素中 s 的数量。我们来检查一下 Java 这个元素在列表中出现了多少次。
>>> courses.count('Java')
1
如果你想要在列表中移除任意指定值,你需要使用 remove() 方法。
>>> courses.remove('Java')
>>> courses
['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
注意:如果 Java 出现多次,则只有第一个 'Java' 元素会被清除。
>>> courses.insert(1,'Java')
>>> courses.insert(1,'Java')
>>> courses
['Java', 'Java', 'Java', 'Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
>>> courses.remove('Java')
>>> courses
['Java', 'Java', 'Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
>>>
另外一种删除元素的方法是使用 del 关键字,这个关键字可以删除列表指定位置的元素,需要使用到列表中要删除元素的索引:
>>> courses
['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
>>> del courses[-1]
>>> courses
['Ruby', 'Linux', 'Python', 'Vim', 'C++']
>>> courses.append('PHP')
>>> courses
['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
列表是有顺序的,我们在执行所有的列表操作的过程中都要时刻记住这一点,有序的列表可以进行反转:
>>> courses
['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']
>>> courses.reverse()
>>> courses
['PHP', 'C++', 'Vim', 'Python', 'Linux', 'Ruby']
如果我们有两个列表,想合并到一起,一种方法是将其中一个列表合并到另外一个列表的末尾位置,可以使用 extend():
定义一个新的课程 new_courses
>>> new_courses = ['BigData', 'Cloud']
>>> courses.extend(new_courses)
>>> courses
['PHP', 'C++', 'Vim', 'Python', 'Linux', 'Ruby','BigData', 'Cloud']
给列表排序,我们使用列表的 sort() 方法,排序的前提是列表的元素是可比较的,例如数字是按照大小进行排序,而字符串则会选择按照字母表的顺序进行排序,在我们的课程列表的例子中,我们先使用该函数默认的排序方法,是按照字母表顺序:
>>> courses
['PHP', 'C++', 'Vim', 'Python', 'Linux', 'Ruby','BigData', 'Cloud']
>>> courses.sort()
>>> courses
['BigData', 'C++', 'Cloud', 'Linux', 'PHP', 'Python','Ruby', 'Vim']
列表也可以使用 pop() 函数返回最后的一个元素,pop() 在返回元素的同时也会删除这个元素,传入一个参数 i 即 pop(i) 会将第 i 个元素弹出:
>>> courses
['BigData', 'C++', 'Cloud', 'Linux', 'PHP', 'Python','Ruby', 'Vim']
>>> c = courses.pop()
>>> c
'Vim'
>>> courses
['BigData', 'C++', 'Cloud', 'Linux', 'PHP', 'Python','Ruby']
>>> courses.pop()
'Ruby'
>>> courses.pop()
'Python'
>>> courses
['BigData', 'C++', 'Cloud', 'Linux', 'PHP']
>>> courses.pop(0)
'BigData'
>>> courses
['C++', 'Cloud', 'Linux', 'PHP']