列表介绍:
列表 由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters 、digits 或names )是个不错的主意。
在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几个学生姓名:
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) 如果你让Python将列表打印出来,Python将打印列表的内部表示,包括方括号: ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] [Finished in 1.0s]
第一部分:访问列表元素
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) print(students[0]) print(students[0].title()) 这里演示了访问列表元素的语法。当你请求获取列表元素时,Python只返回该元素,而不包括方括号和引号: ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] zhangsan Zhangsan [Finished in 0.4s]
索引从0而不是1开始
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) print(students[1]) print(students[3]) print(students[-1]) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] lisi zhaoliu zhaoliu [Finished in 0.3s]
使用列表中的各个值
students = ['zhangsan','lisi','wangwu','zhaoliu'] message = " My first student was a " + students[1].title() + "." print(message) 可使用方法title() 让元素'lisi' 的格式更整洁: My first student was a Lisi. [Finished in 0.3s]
第二部分:修改、添加和删除元素
修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。
修改:
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) students[0] = 'xiaoming' print(students) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['xiaoming', 'lisi', 'wangwu', 'zhaoliu'] [Finished in 0.2s]
添加:(末尾添加)
students = ['zhangsan','lisi','wangwu','zhaoliu']
print(students)
students.append('xiaoming')
print(students)
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 'xiaoming']
[Finished in 0.1s]
添加:(动态创建列表)
方法append() 让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append() 语句添加元素。下面来创建一个空列表,再在其中添加元 素:
students = []
students.append('zhangsan')
students.append('lisi')
students.append('wangwu')
students.append('zhaoliu')
print(students)
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
[Finished in 0.1s]
添加:(在列表中插入元素)
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) students.insert(0,'xiaoming') print(students) students.insert(2,'xiaoming') print(students) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['xiaoming', 'zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['xiaoming', 'zhangsan', 'xiaoming', 'lisi', 'wangwu', 'zhaoliu'] [Finished in 0.1s]
从列表中删除元素:
注意:使用del 语句将值从列表中删除后,你就无法再访问它了。
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) del students[0] print(students) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['lisi', 'wangwu', 'zhaoliu'] [Finished in 0.2s]
使用方法pop() 删除元素
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) students_del = students.pop() print(students) print(students_del) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['zhangsan', 'lisi', 'wangwu'] zhaoliu [Finished in 0.1s]
假设列表中的学生是按时间存储的,就可使用方法pop() 打印一条消息,指出最后的是哪个学生:
students = ['zhangsan','lisi','wangwu','zhaoliu']
print(students)
students_del = students.pop()
print("The last students i owned was a " + students_del.title() + ".")
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
The last students i owned was a Zhaoliu.
[Finished in 0.1s]
弹出列表中任何位置处的元素
students = ['zhangsan','lisi','wangwu','zhaoliu']
print(students)
students_del = students.pop(2)
print("The last students i owned was a " + students_del.title() + ".")
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
The last students i owned was a Wangwu.
[Finished in 0.1s]
如果你不确定该使用del 语句还是pop() 方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元 素后还能继续使用它,就使用方法pop()
根据值删除元素
students = ['zhangsan','lisi','wangwu','zhaoliu']
print(students)
students.remove('zhaoliu')
print(students)
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['zhangsan', 'lisi', 'wangwu']
[Finished in 0.1s]
使用remove() 从列表中删除元素时,也可接着使用它的值。下面删除值'zhaoliu' ,并打印一条消息,指出要将其从列表中删除的原因:
students = ['zhangsan','lisi','wangwu','zhaoliu']
print(students)
too_expensive = 'zhaoliu'
students.remove('zhaoliu')
print(students)
print("
A " + too_expensive.title() + "is too expensive for me.")
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['zhangsan', 'lisi', 'wangwu']
A Zhaoliuis too expensive for me.
[Finished in 0.1s]
第三部分:组织列表
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) students.sort() print(students)
可以按字母排序排列,是永久的排序。 ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['lisi', 'wangwu', 'zhangsan', 'zhaoliu'] [Finished in 0.1s]
使用函数sorted() 对列表进行临时排序
students = ['zhangsan','lisi','wangwu','zhaoliu']
print("here is the student list")
print(students)
print("
Here is the student list:")
print(sorted(students))
print("
here is the studennt list again:")
print(students)
here is the student list
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
Here is the student list:
['lisi', 'wangwu', 'zhangsan', 'zhaoliu']
here is the studennt list again:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
[Finished in 0.1s]
倒着打印列表
students = ['zhangsan','lisi','wangwu','zhaoliu'] print(students) students.reverse() print(students) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] ['zhaoliu', 'wangwu', 'lisi', 'zhangsan'] [Finished in 0.1s]
使用列表时避免索引错误
students = ['zhangsan','lisi','wangwu','zhaoliu']
print(students[4])
Traceback (most recent call last):
File "D:Sublime Text3Sublime Text3 est.py", line 2, in <module>
print(students[4])
IndexError: list index out of range
[Finished in 0.1s]
仅当列表为空时,这种访问最后一个元素的方式才会导致错误
students = []
print(students[-1])
Traceback (most recent call last):
File "D:Sublime Text3Sublime Text3 est.py", line 2, in <module>
print(students[-1])
IndexError: list index out of range
[Finished in 0.1s]