题目
已知s= [1,2,3,4,5,6],执行s[:1] = []后,s值为__________,接着执行s[:2] = 'k'后,s值为____________,再执行s[2:] = 't'后,s值为_____________,最后执行s[1:3] = [ 'm' ,9] ,s值为__________。
已知s= [1,2,3,4,5,6],执行s[:1] = []后,s值为__________,接着执行s[:2] = 'k'后,s值为____________,再执行s[2:] = 't'后,s值为_____________,最后执行s[1:3] = [ 'm' ,9] ,s值为__________。
题目解答
答案
根据给定的操作,逐步执行并更新列表s的值:
1. 执行 s[:1] = [],将列表s的第一个元素删除:
s = [2, 3, 4, 5, 6]
2. 执行 s[:2] = 'k',将列表s的前两个元素替换为字符串'k':
s = ['k', 4, 5, 6]
3. 执行 s[2:] = 't',将列表s从索引2开始的所有元素替换为字符串't':
s = ['k', 4, 't']
4. 执行 s[1:3] = ['m', 9],将列表s从索引1到索引3的元素替换为列表['m', 9]:
s = ['k', 'm', 9]
最终,列表s的值为 ['k', 'm', 9]。
解析
本题考查Python列表切片赋值的规则,特别是右侧为可迭代对象时的处理方式。解题核心在于理解:
- 切片赋值会用右侧的可迭代对象替换原切片部分;
- 右侧可迭代对象的长度与原切片长度不同时,列表长度会自动调整;
- 字符串是可迭代对象,赋值时会逐个字符插入。
第一步:s[:1] = []
- 切片范围:
s[:1]
表示取第一个元素(索引0)。 - 赋值操作:将第一个元素替换为空列表
[]
,即删除第一个元素。 - 结果:
s = [2, 3, 4, 5, 6]
。
第二步:s[:2] = 'k'
- 切片范围:
s[:2]
表示取前两个元素(索引0和1)。 - 赋值操作:字符串
'k'
是可迭代对象,但只有1个字符。用'k'
替换前两个元素,列表长度减少。 - 结果:
s = ['k', 4, 5, 6]
。
第三步:s[2:] = 't'
- 切片范围:
s[2:]
表示从索引2到末尾(元素4, 5, 6
)。 - 赋值操作:字符串
't'
只有1个字符,替换从索引2开始的所有元素,列表长度调整。 - 结果:
s = ['k', 4, 't']
。
第四步:s[1:3] = ['m', 9]
- 切片范围:
s[1:3]
表示取索引1和2的元素(4
和't'
)。 - 赋值操作:用列表
['m', 9]
替换这两个位置,长度不变。 - 结果:
s = ['k', 'm', 9]
。