提问人:vaanchit kaul 提问时间:3/22/2018 最后编辑:vaanchit kaul 更新时间:7/29/2020 访问量:1573
python 中的切片列表
Slicing lists in python
问:
关于切片操作在列表上的确切工作方式存在很多困惑。
为什么 [1,2,3,4][::-1] 返回其反向?
为什么 [1,2,3,4][1:-4] 返回 [] 和 [1,2,3,4][1:-4:-1] 返回 [2] ?
主要问题发生在使用负指数时。
如果有人能在内置模块中向我展示切片的确切定义,那就太好了。
编辑:为什么 [1,2,3][::-1] 和 [1,2,3][0:3:-1] 具有不同的返回值
答:
1赞
Setop
3/22/2018
#1
列表 ['A', 'B', 'C', 'D']
索引从 0 到 size-1。
负指数意味着向后浏览列表:
negative index | positive index
-5 -4 -3 -2 -1 | 0 1 2 3 4
'A' 'B', 'C', 'D',|['A', 'B', 'C', 'D']
索引 > 4 或 < -5 抛出 IndexError。
切片遵循以下模式:List[from:to:step]
- step,默认为 one,指示要在切片中保留哪些索引
它的标志给出了切片的方向
- 正,从左到右,
- 从右到左为负数
- 从索引从哪里开始切片,包括
- 当步长为正数时默认为 0,
- 当 step 为负数时,默认为 -1
- 索引到何处结束切片,独占
- 当步长为正数时,默认为 size-1,
- (size-1) 当步长为负数时
例子:
['A','B','C','D'][::-1] 表示从右到左,从 -1 到 -(size-1) => ['D', 'C', 'B', 'A']
['A','B','C','D'][1:-4] 表示从第二个元素到第一个元素排除,步长为 1 => nothing
['A','B','C','D'][1:-4:-1] 表示从第二个元素到第一个元素,以减一的步长排除,只剩下第二个元素 => [2]
当然,最好的办法是在使用前先试一试样品。
评论
0赞
vaanchit kaul
3/22/2018
为什么 [1,2,3][::-1] 和 [1,2,3][0:3:-1] 不一样?
0赞
Setop
3/26/2018
[::-1] 表示从头到尾,步骤 -1 给出受人尊敬的列表。[0:3:-1] 表示从开始到结束步骤 -1,这会导致空。
0赞
mckenzm
7/28/2020
这是一个重要的答案。其他语言使用 [start:run length],注意力可能会下降。
0赞
Setop
7/29/2020
@vaanchitkaul,[1,2,3][::-1] 和 [1,2,3][-1:-4:-1] 是相同的。
上一个:多维切片
下一个:从特定键开始迭代有序的字典项
评论