我不明白为什么范围函数递增参数适用于切片运算符

I can’t understand why range functions increment argument applies to slicing operator

我正在尝试学习切片运算符,但我有一个问题。

kist = list(range(0,90,2))

bist = kist[::10]
print(bist)

出于某种原因,这将打印 20 的乘数。 我意识到这是因为我在范围函数中添加了“2”。但是我试图在没有 for 循环的情况下打印 10 的乘数。我可以通过写 5 而不是 10 来做到这一点,但为什么呢?为什么范围函数的递增器也适用于切片运算符?

我正在用手机写作。我找不到如何将代码放入片段中。文中如有错误还请见谅

编辑:好的,谢谢大家。我工作了几个小时,无法理解发生了什么。我对编程很陌生。谢谢您的帮助。

其实很简单。你的

klist = list(range(0,90,2))

生成

的列表
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, ... 88]

当你将它的每 10 个元素切片时,你最终会得到 20 的倍数,原因很明显。

因此,根据其定义 range(start, stop[, step]),您有以下范围: kist = [0, 2, 4, ... 86, 88] 当您执行 print(kist[::10]) 时,您将打印列表中的每个第 N 个(即第 10 个)元素。所以,在你的情况下是:

your list: [0,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, ..., 88]
item ID:    0   1   2   3   4   5   6   7   8   9  10  11  ...
                         this one is to be printed ^^ due to your slicing every 10th item