列表在编写程序以及差错中十分重要,因此开继续学习列表的其他操作,如修改,遍历等等。
修改列表
修改元素
list1 = 是修改列表,list1[索引] = 则是修改列表的元素。
list1 = ['暗影之拳', '虚空行者', '解脱者', '沙漠皇帝', '机械先驱']
list1[0] = '离群之刺'
print(list1)
['离群之刺', '虚空行者', '解脱者', '沙漠皇帝', '机械先驱']
del list1[索引]用来删除相应索引的元素。也可以用del list1[::步长]这样切片的方式删。
del list1[3]
print(list1)
del list1[3]
print(list1)
['离群之刺', '虚空行者', '解脱者', '机械先驱']
['离群之刺', '虚空行者', '解脱者']
当然可以看出删完以后后面的元素正向索引会变的。
用切片的方式修改
语法是list1[a:b] = 序列,注意,数值就不是序列,所以不行。你写的序列无论有多少个,都只有a到b-1索引的被替换成这么多个新的,也就是说数量可以不对等。其中list1[0:0]是在索引0处插入新元素。只有设定了步长之后,list1[a:b:c] = 序列,这个时候才需要步长数出来的元素数和插入序列的元素数对等。用list1[a:b] = 空序列的方式也可以实现删除的效果。
list1[1:3] = ['诺克萨斯统领', '不屈之枪', '复仇焰魂']
print(list1)
['离群之刺', '诺克萨斯统领', '不屈之枪', '复仇焰魂']
list1[::2] = ['正义巨像', '皎月女神'] # 多填一个就会报错
print(list1)
['正义巨像', '诺克萨斯统领', '皎月女神', '复仇焰魂']
注意,以上操作只有列表这样的可变序列能用,字符串这样的不可变序列就不行。除非类型转换:用list()函数。
a = '潮汐海灵'
print(list(a))
['潮', '汐', '海', '灵']
用方法修改列表
.append()是解决上面list1[索引]中索引超出上限问题的添加元素的方法,因为上面的方法不能输入比最大索引大的数。
list1 = ['齐天大圣', '铁铠冥魂', '腕豪', '暗裔剑魔', '诺克萨斯之手']
list1.append('狂战士')
print(list1)
['齐天大圣', '铁铠冥魂', '腕豪', '暗裔剑魔', '诺克萨斯之手', '狂战士']
.insert(索引,元素)向,某位置插入一个元素。
list1.insert(2, '正义天使')
print(list1)
['齐天大圣', '铁铠冥魂', '正义天使', '腕豪', '暗裔剑魔', '诺克萨斯之手', '狂战士']
.extend()用来拿新的序列来扩充当前序列。
list1.extend(['放逐之刃', '无双剑姬', '刀锋舞者'])
print(list1)
['齐天大圣', '铁铠冥魂', '正义天使', '腕豪', '暗裔剑魔', '诺克萨斯之手', '狂战士', '放逐之刃', '无双剑姬', '刀锋舞者']
.clear()用来清空可变序列。
list1.clear()
print(list1)
[]
.pop(索引)可以删除相应索引的元素,同时返回被删元素,这是和del的不同。不填默认删最后一个。
# 先撤销回clear之前的list1:['齐天大圣', '铁铠冥魂', '正义天使', '腕豪', '暗裔剑魔', '诺克萨斯之手', '狂战士', '放逐之刃', '无双剑姬', '刀锋舞者']
a = list1.pop(9)
print(list1)
print(a)
['齐天大圣', '铁铠冥魂', '正义天使', '腕豪', '暗裔剑魔', '诺克萨斯之手', '狂战士', '放逐之刃', '无双剑姬']
刀锋舞者
.remove()是根据元素的值删。有相同元素则只删第一个。
list1.remove('放逐之刃')
print(list1)
['齐天大圣', '铁铠冥魂', '正义天使', '腕豪', '暗裔剑魔', '诺克萨斯之手', '狂战士', '无双剑姬']
.reverse()用来反转列表。
list1.reverse()
print(list1)
['无双剑姬', '狂战士', '诺克萨斯之手', '暗裔剑魔', '腕豪', '正义天使', '铁铠冥魂', '齐天大圣']
.sort()对列表的元素排序。默认升序排列,降序加一个reverse=True就行,就是正排序再反转。
list2 = [11,2,31,77,5,19]
list2.sort()
print(list2)
[2, 5, 11, 19, 31, 77]
遍历列表
遍历列表在程序中非常常用,简单说就是取出所有元素。
while循环遍历
简单明了,有几个元素,len就是几,挨个输出就行。
i = 0
while i < len(list1):
print(list1[i])
i += 1
无双剑姬
狂战士
诺克萨斯之手
暗裔剑魔
腕豪
正义天使
铁铠冥魂
齐天大圣
for循环遍历
之前没讲,现在将for循环。语法:
for 变量 in 序列:
(缩进)代码块。
会执行元素个数次,变量和序列无关,是自己设的一个量,如上面的i,执行过程中,每执行一次,它会按顺序把元素赋值给变量。
for i in list1:
print(i)
无双剑姬
狂战士
诺克萨斯之手
暗裔剑魔
腕豪
正义天使
铁铠冥魂
齐天大圣
不难看出for更简便,所以用的更多。