列表增删元素、排序、避免错误

在本章中,你将学习:

        如何定义列表以及如何增删元素;如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;如何确定列表的长度,以及在使用列表时如何避免索引错误。

注:文中出现的list 指列表名

3.2 修改、添加、删除元素

3.2.1 修改列表元素

指定列表名及元素索引,赋新值。

list['原值索引'] = '新值'

3.2.2 在列表中添加元素

  1. 在列表末尾添加元素

list.append('新元素')
  1. 在列表中插入元素

#其中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。这在任何情况下都行之有效,仅当列表为空时,这种访问最后一个元素的方式才会导致错误。


注意 发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以 为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素 数,可帮助你找出这种逻辑错误

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值