通过列表切片在特定范围内解释可迭代对象分配(例如,arr[1:3] = 'ABCD')


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赋值语句中字符串周围的括号。

相关内容

最新更新