目录
s[i] = x、s[i:j] = t、s[i:j:k] = t
del s[x]、del s[i:j]、del s[i:j:k]
s[i] = x、s[i:j] = t、s[i:j:k] = t
s[i] = x,将 s 的第 i 项替换为 x。
s[i:j] = t,将 s 从 i 到 j 的切片替换为可迭代对象 t 的内容。通过切片替换,可以换入比切片所包含或多或少的元素。
s[i:j:k] = t,将 s 从 i 到 j 的切片按k间隔,替换为可迭代对象 t 的内容通过切片间隔替换,必须换入相同数目的元素
注意,通过如上切片替换实际上是分成如下两步骤来视线的:
- step1. 将赋值号(=)左边指定的内容删除
- step2. 将包含在赋值号(=)右边的可迭代对象中的片段插入左边被删除的位置
list1 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
#将list1的第0项替换为'0'
list1[0] = '0'
print(list1)
['0', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
#将list1的第2项~第7-1项5个元素,替换为字符串'a1&'共3个元素
list1[2:7] = 'a1&'
print(list1)
['0', 1, 'a', '1', '&', 7, 8, 9, 10, 11, 12, 13, 14, 15]
#将list1的第3项~第9-1项6个元素,替换为包含10个元素的列表
list1[3:10] = [0,1,2,3,4,5,6,7,8,9,10]
print(list1)
['0', 1, 'a', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15]
#将list1的3~10-1项按间隔共4个元素,替换为10元素列表,报错
list1[3:10:2] = [0,1,2,3,4,5,6,7,8,9,10]
Traceback (most recent call last):
File "<pyshell#230>", line 1, in <module>
list1[3:10:2] = [0,1,2,3,4,5,6,7,8,9,10]
ValueError: attempt to assign sequence of size 11 to extended slice of size 4
#将list1的3~10-1项按间隔共4个元素,替换为4元素列表,成功
list1[3:10:2] = ['A','B','C','D']
print(list1)
['0', 1, 'a', 'A', 1, 'B', 3, 'C', 5, 'D', 7, 8, 9, 10, 12, 13, 14, 15]
del s[x]、del s[i:j]、del s[i:j:k]
del s[x],等同于s[x] = []。
del s[i:j],从s中移除i到j-1项元素。
del s[i:j:k],从s中移除i到j-1项,按k间隔的元素。
#移除第5项元素
list1 = [0,1,2,3,4,5,6,7,8,9]
del list1[5]
print(list1)
[0, 1, 2, 3, 4, 6, 7, 8, 9]
#移除第2项~第5-1项元素
del list1[2:5]
print(list1)
[0, 1, 5, 6, 7, 8, 9]
#移除第3项~第7-1项元素,按2间隔的元素
list1 = [0,1,2,3,4,5,6,7,8,9]
del list1[3:7:2]
print(list1)
[0, 1, 2, 4, 6, 7, 8, 9]
s.remove(x)
删除 s 列表中第一个 x 元素;如果列表中不存在 x 元素,则抛出 ValueError 异常。
s中有元素为列表,只会整体删除列表,而不会单独删除列表元素中的某一个元素。
数值相同的整型、浮点型数据,可以相互匹配删除。
print(list1)
['A', 0, [1, 2, 3], 1, 1, 2, 1, 'B', 1, 'X']
#删除s列表中的字符型元素'B'
list1.remove('B')
print(list1)
['A', 0, [1, 2, 3], 1, 1, 2, 1, 1, 'X']
#删除s列表中的整型元素1
#没有删除列表元素中的1,而是直接删除的最早的一个整型元素1
list1.remove(1)
print(list1)
['A', 0, [1, 2, 3], 1, 2, 1, 1, 'X']
#删除s列表中没有的列表元素[1,2],报错“x not in list”
list1.remove([1,2])
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
list1.remove([1,2])
ValueError: list.remove(x): x not in list
#删除s列表中列表元素[1,2,3]
list1.remove([1,2,3])
print(list1)
['A', 0, 1, 2, 1, 1, 'X']
list1 = [0,1,0,1.0,'1',0,'11',0,[1]]
#删除浮点数1.0,实际删除第一个整数1
list1.remove(1.0)
print(list1)
[0, 0, 1.0, '1', 0, '11', 0, [1]]
#删除整数1,实际删除第一个浮点数1.0
list1.remove(1)
print(list1)
[0, 0, '1', 0, '11', 0, [1]]
s.pop(i)
删除 s 列表中第 i 个元素,并将其返回;如果没有指定 i 参数,s.pop() 将删除最后一个元素并返回。
如果i超过s列表元素数量,则报错“ pop index out of range”。
list1 = ['Axe',1,2.4,[9,'B',1.1],'C',789]
#删除list1位置0元素,字符串'Axe'
list1.pop(0)
'Axe'
print(list1)
[1, 2.4, [9, 'B', 1.1], 'C', 789]
#删除list1位置100元素,超范围报错
list1.pop(100)
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
list1.pop(100)
IndexError: pop index out of range
#没有指定i元素,删除list1位置最后一个元素,整型789
list1.pop()
789
print(list1)
[1, 2.4, [9, 'B', 1.1], 'C']
#删除list1位置2元素,列表[9,'B',1.1]
list1.pop(2)
[9, 'B', 1.1]
print(list1)
[1, 2.4, 'C']
#删除list1位置1元素,浮点数2.4
list1.pop(1)
2.4
print(list1)
[1, 'C']
s.clear()
删除 s 列表中的所有元素,相当于 del a[:]。
list1 = ['Axe',1,2.4,[9,'B',1.1],'C',789]
#clear()没有参数,赋值则报错
list1.clear(1)
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
list1.clear(1)
TypeError: list.clear() takes no arguments (1 given)
#清空list1
list1.clear()
print(list1)
[]