修改列表
摘要:本文为 Python 语言基础中修改列表元素的方法操作
1.用索引修改列表的方法操作
2.用切片修改列表的方法操作
1.1 用索引修改列表的方法操作
上节课在序列里讲到:列表在序列里是可变序列,接下来创建一个名称为“04修改元素.py”,然后把上节课的列表案例移过来删除末尾的内容,示例如下:
#创建一个列表 stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’]
接下来结合上述列表讲解修改列表中的元素,可以直接通过索引来修改,例如修改“孙悟空”这个元素,在上面的列表中“孙悟空”的索引是 0 ,然后将“孙悟空”改为“sunwukong”示例如下:
#创建一个列表 stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’] #修改列表中的元素 #直接通过索引来修改元索 stus[0]=’sunwukong’ print(stus)
执行结果:
从以上示例可以看出成功将“孙悟空”改写为“sunwukong”。
接下来在改写的代码前输出一下,然后在改写后输出一下,有更直观的感受,示例如下:
#创建一个列表 stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’] print("修改前:",stus) #修改列表中的元素 #直接通过索引来修改元索 stus[0]=’sunwukong’ print('修改后:',stus)
执行结果:
示例中没有去改变量,而通过索引改 Stus 对象列表里的元素值,接下来在尝试改一下“沙和尚”改为“哈哈”示例如下:
#创建一个列表 stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’] print("修改前:",stus) #修改列表中的元素 #直接通过索引来修改元索 stus[0]=’sunwukong’ stus[2]=’哈哈’ print('修改后:',stus)
执行结果:
从示例中可以看出已经成功将“沙和尚”改为“哈哈”,然后讲一下如何删除元素,在列表中是通过 Del 来实现删除元素的,接下来尝试删除“哈哈”这个元素,从修改后的Stus 这个列表中可以知道“哈哈”的索引为2那就需要删除索引为2的元素,操作如下:
#创建一个列表 stus =['孙悟空',猪八戒',沙和尚',唐僧',蜘蛛精','白骨精’] print("修改前:",stus) #修改列表中的元素 #直接通过索引来修改元索 stus[0]=’sunwukong’ stus[2]=’哈哈’ # 通过del来删除元素 del stus[2] #删除索引为2的元素 print('修改后:',stus)
执行结果:
以上的操作都是通过索引来实现对列表的修改和删除的操作。
1.2 用切片修改列表的方法操作
接下来将通过切片来修改列表,把上面的列表 Stus 复制过来,修改前两个元素的值,然后测试切片的操作,示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) #通过切片来修改列表 stus[0:2]=’swk’ print(‘修改后:’stus)
执行结果:
以上示例是由切片的方法并且用字符串而字符串里是三个字符从而展示的效果,由于字符串也是一种序列所以会呈现以上效果。接下来改为123来测试如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) #通过切片来修改列表 stus[0:2]=123 print(‘修改后:’stus)
执行结果:
从测试中的显示效果来看是报错了,这是因为在切片进行赋值时,只能使用序列, 切片返回的就是序列,例如上面的“swk”这个字符串就是序列,在呈现传输中“swk”时分别传输的‘s‘,’w‘,’k‘,如下图:
接下来通过切片赋值的方法来给修改前列表中的前两个元素也就是“孙悟空”和“猪八戒”修改为“牛魔王”和“红孩儿”,示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) #通过切片来修改列表 stus[0:2]=['牛魔王',’红孩儿’] print(‘修改后:’stus)
执行结果:
从上面来看2个元素换2元素,但其实还可以增加到3、4、5等等都可以。示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) #通过切片来修改列表 stus[0:2]=['牛魔王',’红孩儿’,’二郎神’] print(‘修改后:’stus)
执行结果:
由于切片的是包含开始不包含结束,那接下来设置为索引0到0是效果如何?测试如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) #通过切片来修改列表 stus[0:0]=['牛魔王’] print(‘修改后:’stus)
从示例可以看出牛魔王到了孙悟空之前了,因为这样设置是向索引为0的位置插入元素,之前上两示例是使用新的元素替换旧的元素。
还有一中情况是用步长来替换元素,接下来通过 Stus 列表使用步长来间隔取元素,示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) print(stus[::2]) print(‘修改后:’stus)
执行结果:
示例中间隔取出3个元素,分别是’孙悟空','沙和尚','蜘蛛精',那接下来尝试用一个’牛魔王’来代替三个元素行不行?示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) stus[::2]=['牛魔王’] print(‘修改后:’stus)
从示例中报错来看在用步长时选取多个元素不能用一个或者不对等的元素来替换,所以当设置了步长时,序列中元素的个数必须和切片中元素的个数一致。示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) stus[::2]=['牛魔王',’红孩儿’,’二郎神’] print(‘修改后:’stus)
接下来讲通过切片删除元素,还可以使用 Del 来删除,然后通过示例来删除前两元素,如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) del stus[0:2] print(‘修改后:’stus)
然后还可以用步长的方法间隔删除,示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) del stus[::2] print(‘修改后:’stus)
然后还可以直接通过切片选定范围后定义一个空列表(序列)内容来删除,示例如下:
stus =['孙悟空',猪八戒',沙和尚',唐僧','蜘蛛精','白骨精’] print("修改前:",stus) stus[1:3]=[] print(‘修改后:’stus)
以上操作,只适用于可变序列,不可变序列,无法通过索引来修改,示例如下:
#以上操作,只适用于可变序列 s ='hello s[1]='a' print(s[::2])
对于这种情况可以通过 List()函数将其他的序列转换为list,
示例如下:
s ='hello s=list(s) print(s)
从示例来看s已经变为一个列表,但是已经不是字符串了。hello分布别变为元素。
以上是通过索引来修改列表对象的内容。