- 列表是什么
列表 是一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有的字母、数字0-9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或 names)是个不错的选择。
在Python中用([])表示列表,并用逗号来分隔其中的元素。例如:
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)
- 访问列表元素
列表是有序集合,因此要访问到列表的任何元素,只需将该元素的位置或者索引告诉Python。要访问列表元素,可指出列表的名称,再指出元素的索引,并放在方括号中。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[0]) # 返回第一个元素
print(bicycles[0][0]) # 返回第一个元素第一个字母
- 索引从 0 开始
在Python中,第一个元素的索引为0,而不是1。这与列表底层实现有关。根据这种简单的计数方式,要访问列表的任何元素,都可将其位置减一,并将结果作为索引。
Python为方位最后一个元素提供了一种特殊的语法。通过将索引指定为-1,可让Python返回最后一个列表元素。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[-1]) # 返回最后一个元素
- 使用列表中的各值
可像使用其他变量一样使用列表中的各值。
下面来尝试从列表中提取第一款自行车,并使用这个值来创建一条消息:
bicycles = ['trek','cannondale','redline','specialized']
message = "My first bicycle was a "+bicycles[0].title() + "。"
print(message)
- 列表练习
namelist = ['Tom','Kilimanjaro','ZhangSan','LiSi']
message = [
'送你一个惬意的宁静周末,愿你的生活阳光灿烂,爱情柔风细雨,快乐永久长驻,事业欣欣向荣,投资欢欣与鼓舞,家人健康长寿,周末愉快!',
'注意,注意!今天天气降温,需多穿衣服,多喝水。我的提示没有华丽的词语,只是提醒大家多添衣多喝水。祝大家身体健康。']
for i in range (len(namelist)):
for j in range (len(message)):
print (i,j) # 打印所选择的元素
print("Hello " + namelist[i]+ ' ' + message[j] +"。" ) # 打印对应语句
- 修改、添加、删除元素
1、修改元素:
修改列表元素的语法与访问列表元素的语法相似。要修改列表元素,可指定列表名和要修改的元素索引,再指定该元素的新值。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
# 根据元素索引进行修改
motorcycles[0] = 'ducati'
print(motorcycles)
2、添加元素
在列表中添加新的元素,最简单的方式是将元素附加到列表末尾。给列表附加元素时,它将添加到列表末尾。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
3、插入元素
使用insert() 方法可在列表的任何位置添加新元素。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
motorcycles.insert(0,'ducati')
print(motorcycles)
- 删除元素
1、使用del语句删除元素
如果知道要删除的元素在列表中的位置,可使用del语句;
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
# 添加元素
motorcycles.insert(0,'ducati')
print(motorcycles)
# 删除元素
del motorcycles[0]
print(motorcycles)
2、使用pop() 删除元素
方法pop() 可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像 一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
motorcycles = ['honda','yamaha','suzuki']
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)
3、弹出列表中任何位置处的元素
实际上,你可以使用pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。
motorcycles = ['honda','yamaha','suzuki']
frist_owned = motorcycles.pop(0)
print('The frist motorcycle I owned was a ' + frist_owned.title() + '。 ')
如果你不确定该使用del 语句还是pop() 方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元 素后还能继续使用它,就使用方法pop() 。
4、根据值删除元素
有时候,你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法remove() 。 例如,假设我们要从列表motorcycles 中删除值'ducati' 。
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)
注意 方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。你将在第7章学习如何这样做。
- 组织列表
在你创建的列表中,元素的排列顺序常常是无法预测的,因为你并非总能控制用户提供数据的顺序。这虽然在大多数情况下都是不可避免的,但你经常需要以特定的顺序呈现信 息。有时候,你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列表的方式,可根据具体情况选用。
- 使用方法sort()对列表进行永久性排序
Python方法sort() 让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其中的汽车按字母顺序排列。为简化这项任务,我们假设该列表中的所有值都是小写的。
cars = ['bmw','audi','toyota','subaru']
cars.sort()
print(cars)
方法sort() 永久性修改了列表元素的排序顺序。
按与字母顺序相反的顺序排列列表元素,为此,只需向sort() 方法传递参数reverse=True 。下面的示例将汽车列表按与字母顺序相反的顺序排列:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
- 使用函数sorted() 对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted() 。函数sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排 列顺序。 下面尝试对汽车列表调用这个函数。
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
- 倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse() 。假设汽车列表是按购买时间排列的,可轻松地按相反的顺序排列其中的汽车:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
注意,reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序:
方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。
- 确定列表长度
使用函数len() 可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4:
cars = ['bmw', 'audi', 'toyota', 'subaru']
len(cars)
- 使用列表时避免索引错误
刚开始使用列表时,经常会遇到一种错误。假设你有一个包含三个元素的列表,却要求获取第四个元素:
Traceback (most recent call last):
File "motorcycles.py", line 3, in <module>
print(motorcycles[3])
IndexError: list index out of range