在本章中,你将学习:
如何定义列表以及如何增删元素;如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;如何确定列表的长度,以及在使用列表时如何避免索引错误。
注:文中出现的list 指列表名
3.2 修改、添加、删除元素
3.2.1 修改列表元素
指定列表名及元素索引,赋新值。
list['原值索引'] = '新值'
3.2.2 在列表中添加元素
-
在列表末尾添加元素
list.append('新元素')
-
在列表中插入元素
#其中0为索引值 list.insert(0,'新元素')
3.2.3 从列表中删除元素
1.使用del语句删除
删除列表某个元素,并不再使用该元素
del list['索引值']
2.使用方法pop()删除元素
删除列表末尾元素,并继续使用
motorcycles = ['honda','yamaha','suzuki'] last_owned = motorcycles.pop() print('the last motorcycle l owned ws a ' + last_owned.title() + '.') #输出为: >>>the last motorcycle l owned ws a Suzuki.
3.弹出列表中任何位置处的元素
当使用pop()弹出列表中的元素时,该元素就不在列表中
motorcycles = ['honda','yamaha','suzuki'] first_owned = motorcycles.pop(0) print('the last motorcycle l owned ws a ' + first_owned.title() + '.') #输出为: >>>the last motorcycle l owned ws a Honda.
4.根据值删除元素
不知元素位置,只知值,可使用方法remove()
list.remove('元素值')
注意:方法remove()只删除第一个指定的值。若要删除的值在列表中出现多次,则需要使用循环判断是否删除所有该样值。
代码示例3.2_嘉宾邀请
#嘉宾名单 guests = ['鲁迅','胡适','辜鸿铭','陈独秀'] print('邀请\n{}\n一起共进晚餐。'.format(guests[0]+guests[1]+guests[2]+guests[3])) #修改嘉宾名单 print('{}无法赴约'.format(guests[1])) guests[1] = '钱玄同' #添加嘉宾 print('找到了一个更大的餐桌,可容纳更多的嘉宾。\t') guests.insert(0,'李大钊') guests.insert(3,'蔡元培') guests.append('沈尹默') for person in guests: print('邀请{}先生一起共进晚餐。'.format(person)) #缩减名单 print('因新餐桌未到,只能邀请两人参加。') poped = guests.pop() print('{}先生很抱歉,无法邀请您来共进晚餐。'.format(poped)) poped = guests.pop() print('{}先生很抱歉,无法邀请您来共进晚餐。'.format(poped)) poped = guests.pop() print('{}先生很抱歉,无法邀请您来共进晚餐。'.format(poped)) poped = guests.pop() print('{}先生很抱歉,无法邀请您来共进晚餐。'.format(poped)) poped = guests.pop() print('{}先生很抱歉,无法邀请您来共进晚餐。'.format(poped)) print('{},{}依然在受邀人之列。'.format(guests[0],guests[1])) del guests[0] del guests[0] print(guests)
3.3 组织列表
3.3.1 使用方法 sort()对列表进行永久性排序
列表按顺序字母排序
list.sort()
按与字母顺序相反的顺序排列列表元素.为此。只需向sort()方法传递参数 reverse=True。
list.sort(reverse=True)
3.3.2 使用函数 sorted()对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数 sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
sorted(list)
注意: 在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种 解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。然而, 大多数排序方式都基于本节介绍的知识。
3.3.3 倒着打印列表
反转列表元素的排列顺序,可使用方法reverse()
list.reverse()
注意,reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排 列顺序:
3.3.4 确定列表的长度
len(list)
注意 Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。
代码示例3.3
list = ['西湖','乐山大佛','龙门石窟','青海湖','九寨沟'] print(list) #使用 sorted()按字母顺序打印这个列表 print(sorted(list)) #使用 sorted()按与字母顺序相反的顺序打印这个列表 print(sorted(list,reverse=True)) #再次打印该列表,核实排列顺序未变 print(list) #用 reverse()修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。 list.reverse() print(list) #使用 reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。 list.reverse() print(list) #使用 sort()修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。 list.sort() print(list) #使用 sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。 list.sort() print(list) #打印列表长度 print(len(list))
运行结果:
>>> ['西湖', '乐山大佛', '龙门石窟', '青海湖', '九寨沟'] ['乐山大佛', '九寨沟', '西湖', '青海湖', '龙门石窟'] ['龙门石窟', '青海湖', '西湖', '九寨沟', '乐山大佛'] ['西湖', '乐山大佛', '龙门石窟', '青海湖', '九寨沟'] ['九寨沟', '青海湖', '龙门石窟', '乐山大佛', '西湖'] ['西湖', '乐山大佛', '龙门石窟', '青海湖', '九寨沟'] ['乐山大佛', '九寨沟', '西湖', '青海湖', '龙门石窟'] ['乐山大佛', '九寨沟', '西湖', '青海湖', '龙门石窟'] 5
3.4 使用列表时避免索引错误
终端显示为:
>>>IndexError: list index out of range
列表索引从0开始,超出即会报错,别忘了,每当需要访问最后一个列表元素时,都可使用索引-1。这在任何情况下都行之有效,仅当列表为空时,这种访问最后一个元素的方式才会导致错误。
注意 发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以 为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素 数,可帮助你找出这种逻辑错误