我不明白为什么范围函数递增参数适用于切片运算符
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
我正在尝试学习切片运算符,但我有一个问题。
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