列表可以使用所有适用于序列的标准操作,例如索引、分片、连接和乘法。但列表还有一些属于自己的操作,如修改列表本身的操作,这些操作包括元素赋值、元素删除、分片赋值以及列表方法。
1.列表元素赋值 如果需要修改列表中的某一个元素,可以像使用数组一样对列表中的特定元素赋值,也就是使用一对中括号指定元素在列表中的索引,然后使用赋值运算符(=)进行赋值。
[例 4.27] 本例修改了列表x中的前两个元素值。
x = ['小黑','小白','小红'] x[0] = '小黄' #把小黑修改为小黄 x[1] = '小橙' #把小白修改为小橙 print(x)输出结果:
['小黄', '小橙', '小红']在上面代码中,通过列表的元素赋值操作,修改了列表x中的前两个元素,第1个元素修改为"小黄",第2个元素修改为"小橙"。
在列表元素赋值的操作中,列表索引可以是负数,在这种情况下,会从列表最后一个元素开始算起。例如x[-1]表示倒数第1个列表元素,x[-2]表示倒数第2个列表元素。不管列表索引使用的是正整数还是负数,都不能超过索引范围,否则将抛出异常。
[例 4.28] 本例使用超过列表索引范围的索引,会抛出异常。
x = ['小黑','小白','小红'] x[-1] = '小黄' #把小红修改为小黄 #x[-4] = '小橙' 超出索引范围,抛出异常 print(x)输出结果:
['小黑', '小白', '小黄']在上面代码中,我注释掉了抛出异常的代码,所以我在运行中,没有出现异常。如果我没有注释掉异常的代码,运行中肯定会出现异常。
2.删除列表元素 从列表中删除元素也很容易,使用del语句就可以了。
numbers = [1,2,3,4,5,6,7,8,9] del numbers[2:5] #输出结果:[1, 2, 6, 7, 8, 9] del numbers[-1] #输出结果:[1, 2, 3, 4, 5, 6, 7, 8] del numbers[1] #输出结果:[1, 3, 4, 5, 6, 7, 8, 9] print(numbers)3.分片赋值 分片赋值和分片获取子列表一样,也需要使用分片操作,也就是需要指定要操作的列表的范围。
[例 4.29] 本例将利用分片赋值将列表中的子列表替换成其他列表,并使用list函数将字符串分解成由字符组成的列表,并替换字符串中的某一部分。
x = ['hello','world','yeah'] x[1:] = ['a','b','c'] #将列表x从第2个元素开始替换成一个新的列表 print(x) name = list('nike') #使用list函数将'nike'转换成由字符组成的列表 print(name) name[1:] = list('adidas') #使用分片赋值操作将'nike'替换成'adidas' print(name)输出结果:
['hello', 'a', 'b', 'c'] ['n', 'i', 'k', 'e'] ['n', 'a', 'd', 'i', 'd', 'a', 's']上面的代码使用了分片赋值对原列表进行了赋值操作,可以看到,分片赋值是用另一个列表来修改原列表中的子列表。也就是将原列表中的子列表替换成另一个新的子列表。而且在赋值时,被替换的子列表和新的子列表可以不等长。例如,[‘world’,‘yeah’]可以替换为[‘a’,‘b’,‘c’],长度可以不一样。
可以利用这个特性在列表中插入一个列表或删除一些列表元素。 [例 4.30] 本例将利用分片赋值在列表numbers中插入一个列表,并删除一些列表元素。
numbers = [1,6,7,8,9] numbers[1:1] = [2,3,4,5] #在列表numbers的开始索引1和结束索引1的后面插入一个列表 print(numbers) numbers[1:3] = [] #在列表numbers中把开始索引1和结束索引3之前的元素删除 print(numbers)输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 4, 5, 6, 7, 8, 9]在上面代码中,使用分片赋值操作在列表numbers中的1和6之间插入了列表[2,3,4,5]。numbers[1:1]中冒号(:)前面的数字表示要替换的子列表的第1个元素在父列表中的索引,而冒号后面的数字表示子列表下一个元素在父列表中的索引,所以冒号前后两个数字相等,表示不替换列表中的任何元素,直接在冒号前面的数字后面插入新的列表。最后使用分片赋值将第2、3个元素替换成了空列表,所以最后numbers列表的值是[1,4,5,6,7,8,9]。