第三章
1、列表
列表由一系列的按特定顺序排列的元素组成。列表中的东西可以是任意的,且元素之间可以没有任何的关系。
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline', 'specialized']
列表是有序集合,若要访问列表中的元素,就必须要将该元素的位置或索引告诉Python。列表第一个元素的索引并不是1,而是0,大多数的编程语言都是如此。要访问列表中的任何元素,都可以将该元素的位置减1,然后作为其索引访问该元素。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[2])
# 输出:
redline
另外,Python为访问列表的最后一个元素提供了一种语法,即将索引指定为-1,就可以访问列表的最后一个元素,以此类推,也可以访问列表中的任何元素。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-3])
# 输出:
cannondale
还可以像使用其他变量一样使用列表中的值。如:(这里使用了前面字符串中的方法,使结果更美观)
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = "My first bicycle was a " + bicycles[1].title() + "."
print(message)
# 输出:
My first bicycle was a Cannondale.
2、修改、添加和删除元素
大多数的列表都是动态的,会随着程序的运行增删元素。
(1)修改元素
指定列表名和要修改的元素的索引,再指定该元素的新值,即可修改元素。
bicycles = ['trek', 'cannondale', 'redline']
print(bicycles)
bicycles[1] = 'specialized'
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline']
['trek', 'specialized', 'redline']
(2)添加元素
在末尾添加元素:append()
bicycles = ['trek', 'cannondale', 'redline']
print(bicycles)
bicycles.append('specialized')
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline']
['trek', 'cannondale', 'redline', 'specialized']
插入元素:insert()
这种操作会将列表中既有的每个元素都往后移动一个位置。
bicycles = ['trek', 'cannondale', 'redline']
print(bicycles)
bicycles.insert(2, 'specialized')
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline']
['trek', 'cannondale', 'specialized', 'redline']
(3)删除元素
使用del语句删除元素:
可删除列表中任意位置的元素。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
del bicycles[2]
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'cannondale', 'specialized']
使用pop()方法删除元素:
此方法可删除列表任何位置的元素,并能返回已经删除了的该元素的值,可以继续使用它,但列表中已没有该元素。
当你需要删除列表末尾的元素,小括号中不需要填任何值,而当你删除其他位置的元素时,小括号中可填入指定要删除的元素的索引。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
print(bicycles.pop())
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline', 'specialized']
specialized
['trek', 'cannondale', 'redline']
del语句与pop()方法的区别使用:
如果你要从列表中删除一个元素,且不再使用它,就用del;如果你要在删除元素之后还能继续使用它,就用pop()。
根据值删除元素:remove()
当你不知道要删除的元素的位置的话,用此方法。该方法没有返回值,即删除元素之后不能继续使用,若要继续使用,就必须在删除之前保存该元素。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
bicycles.remove('trek')
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline', 'specialized']
['cannondale', 'redline', 'specialized']
需要注意的是:方法remove()只删除匹配到的第一个指定的值,如果要删除的值在列表中多次出现,就需要使用循环来删除所有这样的值。
3、组织列表
(1)使用sort()方法对列表进行永久性排序
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.sort()
print(bicycles)
# 输出:
['cannondale', 'redline', 'specialized', 'trek']
当往小括号中添加参数reverse=True时,该列表会以上述相反的顺序排列。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.sort(reverse=True)
print(bicycles)
# 输出:
['trek', 'specialized', 'redline', 'cannondale']
(2)使用sorted()函数对列表进行临时排序
该函数可以保留列表元素原来的排列顺序,同时以特定的顺序呈现它们。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print("原始顺序:", bicycles)
print("特定顺序1:", sorted(bicycles))
print("特定顺序2:", sorted(bicycles, reverse=True))
print("原始顺序:", bicycles)
# 输出:
原始顺序: ['trek', 'cannondale', 'redline', 'specialized']
特定顺序1: ['cannondale', 'redline', 'specialized', 'trek']
特定顺序2: ['trek', 'specialized', 'redline', 'cannondale']
原始顺序: ['trek', 'cannondale', 'redline', 'specialized']
(3)倒着打印列表
这里用到方法reverse(),但是这个reverse不同于上述的reverse,这里的reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列。
它可以永久性的修改列表元素的排列顺序,但当你需要恢复原来的排列顺序时,只要再次调用该函数即可。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
bicycles.reverse()
print(bicycles)
# 输出:
['trek', 'cannondale', 'redline', 'specialized']
['specialized', 'redline', 'cannondale', 'trek']
(4)确定列表的长度
使用len()函数可以获取列表的长度:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(len(bicycles))
# 输出:
4
4、使用列表时避免索引错误
当你的列表长度为5时,你却要求获取第5个,甚至第6个元素,这时会产生索引错误IndexError。因为Python找不到索引为5或者6的元素,此时应该查询列表的长度,再将要查询的元素的位置减1作为索引获取该元素。