用切片删除所有其他元素

考虑一下:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

这些是 Python 中删除元素的正确语句:

numbers[0:2] = []
numbers[3:5] = []

但是下面的语句是不允许的:

numbers[::2] = []

ValueError:尝试将大小为 0 的序列分配给大小为 5 的扩展切片

是什么阻止了 Python 中的这种语句?

回答

ValueError:尝试将大小为 0 的序列分配给大小为 5 的扩展切片

是什么阻止了 Python 中的这种语句?

文档中指出,对于存在显式步骤(2在您的情况下)的情况,替换必须具有相同的长度。

手术 结果 笔记
s[i:j] = t 从 i 到 j 的 s 切片被可迭代 t 的内容替换
s[i:j:k] = t s[i:j:k] 的元素被 t 的元素替换 (1) t 必须与它要替换的切片具有相同的长度。

那里也记录了正确的方法。

手术 结果 笔记
del s[i:j] 与 s[i:j] = [] 相同
del s[i:j:k] 从列表中删除 s[i:j:k] 的元素

代码:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del numbers[::2]
print(numbers)

输出:

[1, 3, 5, 7, 9]


以上是用切片删除所有其他元素的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>