用负索引切割赋值

问题描述 投票:0回答:1

我在切片任务方面遇到了一些问题:

据我所知,切片的一般语法是l [start:stop:step]

当我们使用正步骤然后我们向前横向时,当我们使用负步骤时我们向后横向:

L = [1,2,3,4]

升[3:1:1] = [5]

当我使用上面的赋值然后它插入元素5在索引3像插入操作,但当我使用l [-3:-1:-1] = [5]然后它显示我的值错误....我完全困惑..请解释一下。

variable-assignment slice
1个回答
0
投票

假设您在Python中询问切片,“步骤”部分将使切片成为扩展切片。

仅当右侧的列表与扩展切片的大小相同时,才可以分配扩展切片。见https://docs.python.org/2.3/whatsnew/section-slices.html

所以令人困惑的事实是你的l[3:1:1] = [5]没有引发ValueError,因为左右大小不同(0和1;请注意你的l[3:1:1]l[-3:-1:-1]都评估为空列表)。

我认为这可以通过以下事实来解释:步骤1与原始切片语法[start:end]没有区别,因此可以作为正常切片处理。

如果你的目标是插入,只是不要使用该步骤。

© www.soinside.com 2019 - 2024. All rights reserved.