第三章:列表简介
列表 由一系列按特定顺序排列的元素组成
在Python中,用方括号
[]表示列表,并用逗号分隔其中的元素
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles) # 如果让Python将列表打印出来,Python将打印列表的内部表示,包括方括号
['trek', 'cannondale', 'redline', 'specialized']
一、 访问列表元素
列表是有序集合,因此要访问列表的任意元素,只需将该元素的位置(索引)告诉 Python即可
要访问列表元素,可指出列表的名称,再指出元素的索引,并将后者放在方括号内
在Python中,第一个列表元素的索引为0,而不是1,所以要访问列表的任何元素,都要将其位置减1
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles[1]) # 索引1
cannondale # 元素2
>>> print(bicycles[3]) # 索引3
specialized # 元素4
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> print(bicycles[-1]) #索引-1
specialized #倒数第一个元素
同理,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,依此类推
小练习:利用列表中的元素创建一条消息,
My first bicycle was a xxx,且要求xxx的首字母大写
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> message = f"My first bicycle was a {bicycles[2].title()}."
>>> print(message)
My first bicycle was a Redline.
二、 修改、添加和删除元素
创建的大多数列表都是动态的,这意味着列表创建后,可以随着程序的运行增删元素
1. 修改列表元素
修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,只要对该列表元素进行重新赋值即可
>>> course = ["Chinese", "Math", "English"]
>>> print(course)
['Chinese', 'Math', 'English']
>>> course[0] = "Biology" # 直接对列表元素进行重新赋值
>>> print(course)
['Biology', 'Math', 'English']
2. 在列表中添加元素
在Python中,有多种在已有列表中添加新元素的方式
a. 在列表末尾添加元素
在列表中添加新元素时,最简单的方式是将元素附加(append)到列表。给列表附加元素时,它将添加到列表末尾
>>> course = ["Chinese", "Math", "English"]
>>> print(course)
['Chinese', 'Math', 'English']
>>> course.append("Biology") # 使用方法append()在末尾添加元素
>>> print(course)
['Chinese', 'Math', 'English', 'Biology']
b. 在列表中插入元素
使用方法insert()可在列表的任何位置添加新元素。需要指定新元素的索引和值
>>> course = ["Chinese", "Math", "English"]
>>> course.insert(1, "Biology")
>>> print(course)
['Chinese', 'Biology', 'Math', 'English']
方法insert()在索引处插入元素,原先此位置上的元素及后面的元素均后移一个位置
3. 从列表中删除元素
可根据位置或值来删除列表中的元素,下面提供四种删除元素的方法
a. 使用del语句删除元素
如果知道要删除的元素在列表中的位置,可使用del语句
>>> course = ["Chinese", "Math", "English"]
>>> del course[1] # 删除索引为1的元素
>>> print(course)
['Chinese', 'English']
缺点:使用del语句将值从列表中删除后,就无法再访问它了
b. 使用方法pop()删除元素
方法
pop()删除列表末尾的元素,并让你能够接着使用它。术语弹出 (pop)源自 这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素
>>> course = ["Chinese", "Math", "English", "Biology"]
>>> print(course)
['Chinese', 'Math', 'English', 'Biology']
>>> popped_course = course.pop() # pop()不带参数默认弹出列表的最后一个元素
>>> print(course)
['Chinese', 'Math', 'English']
>>> print(popped_course)
Biology
c. 弹出列表中任何位置处的元素
可以使用
pop()来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可
>>> course = ["Chinese", "Math", "English", "Biology"]
>>> print(course)
['Chinese', 'Math', 'English', 'Biology']
>>> popped_course = course.pop(2) # pop(2)表示弹出列表的第三个元素
>>> print(course)
['Chinese', 'Math', 'Biology']
>>> print(popped_course)
English
d. 根据值删除元素
有时候,我们不知道要删除的值在列表中的位置,但如果知道要删除的值,可使用方法
remove()
>>> course = ["Chinese", "Math", "English", "Biology"]
>>> print(course)
['Chinese', 'Math', 'English', 'Biology']
>>> too_difficult = "Math"
>>> course.remove(too_difficult)
>>> print(course)
['Chinese', 'English', 'Biology']
>>> print(too_difficult)
Math
此方法既能删除指定的值,而且还能保留删除值的信息
注:方法
remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除
三、 组织列表
有时,我们创建的列表中,元素的排列顺序并不是我们想要的,需要以特定的顺序呈现,但有时也希望保持列表最初的排列顺序,下面就根据不同的要求提供相应的解决办法
1. 使用方法sort()对列表永久排序
>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> animals.sort() # 按照字母顺序进行排序
>>> print(animals)
['bear', 'cat', 'dog', 'elephant', 'panda', 'sheep', 'wolf']
>>> animals.sort(reverse = True) # 按照相反的字母顺序排序
>>> print(animals)
['wolf', 'sheep', 'panda', 'elephant', 'dog', 'cat', 'bear']
此方法对列表元素排列顺序的修改是永久性的
2. 使用函数sorted()对列表临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数
sorted()
>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> print("Here is the original list:")
>>> print(animals)
Here is the original list: ['dog', 'elephant', 'panda', 'cat', 'wolf', 'sheep', 'bear']
>>> print("Here is the sorted list:")
>>> print(sorted(animals))
Here is the sorted list: ['bear', 'cat', 'dog', 'elephant', 'panda', 'sheep', 'wolf']
>>> print("Here is the original list again:")
>>> print(animals)
Here is the original list again: ['dog', 'elephant', 'panda', 'cat', 'wolf', 'sheep', 'bear']
调用函数
sorted()后,列表元素的排列顺序并没有变。如果要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True在所有的值不都是小写时,按字母顺序排列要复杂些。决定排列顺序时,有多种解读大写字母的方式,要指定准确的排列顺序,比较复杂,这里暂时不做讨论
3. 倒着打印列表
要反转列表元素的排列顺序,可使用方法
reverse()
>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> print(animals.reverse())
['bear', 'sheep', 'wolf', 'cat', 'panda', 'elephant', 'dog']
reverse()不是按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序方法
reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,只需对列表再次调用reverse()即可
4. 确定列表的长度
使用函数
len()可快速获取列表的长度
>>> animals = ["dog", "elephant", "panda", "cat", "wolf", "sheep", "bear"]
>>> len(animals)
7
注意:
Python计算列表元素数时从1开始,索引是从0开始,要注意区分
四、 使用列表时避免索引错误
刚开始使用列表时,经常会遇到一种错误,那就是索引错误
>>> course = ["Chinese", "Math", "English"]
>>> print(course[3]) # python中索引是从0开始,所以没有第四个元素,会发生报错
Traceback (most recent call last):
File "course.py", line 2, in <module>
print(course[3])
IndexError: list index out of range
发生索引错误却找不到解决办法时,可以尝试将列表或其长度打印出来,这样可以帮助我们更好的去找出错误原因
五、 小结
在本章中,我们学习了:
列表是什么以及如何使用其中的元素
如何定义列表以及如何增删元素
如何对列表进行永久性排序
如何为展示列表而进行临时排序
如何确定列表的长度
在使用列表时如何避免索引错误