python - 使用负索引调整大小列出切片分配

标签 python list slice variable-assignment

这个问题在这里已经有了答案:





Why can't I assign an arbitrary iterable to an extended slice whose step is -1?

(1 个回答)


去年关闭。




如果我这样做:

p=list(range(10))
p[2:6:1]=['a','b']
我收到 p=[0, 1, 'a', 'b', 6, 7, 8, 9]这意味着 Python 正在用新列表 ['a','b'] 替换索引为 2-5 的元素.
现在什么时候,我做
p=list(range(10))
p[-2:-6:-1]=['a','b']
Python 说 ValueError: attempt to assign sequence of size 2 to extended slice of size 4为什么它在第一种情况下调整列表的大小而不是第二种情况?

最佳答案

这是扩展切片的预期行为。正如您所发现的,它需要将相同数量的元素分配给切片。这是documentation那是指这个问题。
更明显的是为什么如果改为切片 p[1:5:2] .它不是一个很好的连续块,您可以轻松调整其大小。p[2:6:1]之所以有效,是因为它本质上是一个常规切片,即 p[2:6] .

关于python - 使用负索引调整大小列出切片分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62595629/

相关文章:

python - Git Python 好像不行

php - 如果玩家数组为空,则 echo "No Players Online"

python从另一个列表中删除列表的元素,其中两个列表中的项目多次出现

vector - 为什么在使用置换器箱中的迭代器插入向量时得到 "expected u32, found &{integer}"?

python - 了解切片

python - 找到总和为 N 的所有组合的好方法?

基于 Python 树的聊天机器人

python - Python 中的二进制 I/O

python - 将文件中的普通数字转换为整数列表

python 字符串以交替步幅切片