python中的扩展切片如何工作?

时间:2018-09-06 04:24:00

标签: python slice

slice语法是引用序列子部分(通常是字符串和列表)的便捷方法。切片s[start:end]是从起点开始一直延伸到但不包括终点的元素。

例如

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(letters[2:5])

这将给出输出:['c', 'd', 'e']

但是扩展切片是如何工作的。

print(letters[2:4:5])

上面的print语句将给出['c']作为输出。我不明白怎么办?

2 个答案:

答案 0 :(得分:0)

切片实际上将用作步进值。让我们假设我们有一个1-10的数字列表。附加切片将像“ step”值一样工作。这是一个示例:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(nums[0:10:2])

我们每次加2。这是我们的输出:

[1, 3, 5, 7, 9]

您得到C作为输出,因为您正在调用第三个索引,然后切片到第5个索引(因为Python中的索引是从零开始的,所以将其划分为第4个索引),但是您将值步进为5。不能以5步进,因为它超出了切片停止的索引(索引5或基于零的Python语法中的索引4)。这就是为什么您的代码只返回'c'的原因。

答案 1 :(得分:0)

这是因为第三个参数称为“ step”

(start:end:step)

当你说:

print(letters[2:4:5])

基本上,您说的是从索引2开始,在索引4处结束,然后是5步。

例如:

print(letters[::2])

返回['a', 'c', 'e', 'g']

需要注意的两件事:

1)就您而言,即使您说出print(letters[2:4:1000]),输出仍将是'c'

2)默认“步长”值为1。