arr = [1, 2, 3, 4, 5]
arr[1:3] = 'ABCD'
arr
[1, 'A', 'B', 'C', 'D', 4, 5]
毫无疑问,这个代码毫无用处。我认为没有人使用这样的python列表。但我想知道结果只是因为好奇。
我能直观地看到结果。
旧的
arr[1:3]
(2, 3
(消失,并依次被字符串'ABCD'
取代。
但就结果而言,我不明白它是如何工作的。
我能得到一些提示或文档来理解这个结果吗?
Slice赋值采用右侧的可迭代。许多东西可以是可迭代的、数组或列表,例如[8, 9]
:
arr = [1, 2, 3, 4, 5]
arr[1:3] = [8, 9]
arr
[1, 8, 9, 4, 5]
字符串是一个可迭代的字符,正如您在这个示例中看到的那样
for x in 'ABCD':
print(x)
A
B
C
D
这就是为什么得到你得到的结果。因此,如果你想要用一个字符串数组元素替换arr[1:3]
切片,你需要给它一个可迭代的元素:
arr = [1, 2, 3, 4, 5]
arr[1:3] = ['ABCD']
arr
[1, 'ABCD', 4, 5]
注意slice赋值语句中字符串周围的括号。