【发布时间】:2018-09-23 12:23:24
【问题描述】:
假设我有:
>>> a = [1, 2, 3, 4]
我想得到一个反向切片。假设我想要给定 start_idx = 1 和 stop_idx = 0 的第 1 个和第 0 个元素:
[2, 1]
使用切片符号:
a[x:y:z]
对于x、y 和z 使用start_idx 和stop_idx,我使用什么值?
我试过了:
>>> a[start_idx:stop_idx:-1]
[2]
>>> a[start_idx:stop_idx-1:-1]
[]
区分:
这个问题是关于一个带有负步长的切片,其中开始和结束索引元素都应该包括在内(就像数学中的闭区间),并且切片结束索引是动态计算的。
Understanding Python's slice notation
是一个关于符号的通用通用问题:x、y 和 z 在 a[x:y:z] 中的含义。它没有提到反转案例。
这个问题与其他标记重复的问题不同,因为它处理的是反向切片开始和结束索引由变量计算或给出而不是硬编码的一般情况。
【问题讨论】:
-
在 54 秒前询问并回答了这两个问题......很奇怪。
-
This answer 提供了几个列表切片技巧,并且确实提到了你的!看看:)
-
@AlekseiMaide 明确鼓励提出问题然后自己回答(即使您在发布问题之前知道答案)。见It’s OK to Ask and Answer Your Own Questions
-
还相关:Index entire array backwards in for loop(其中包括在前向切片情况下使用
None显式请求“到序列结束”切片行为,但在切片索引结束时使用负索引) . -
@moooeeeep 的第一个链接中接受的答案包括关于如何显式传递
None以获得与将结束索引留空相同的效果的评论。