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']
作为输出。我不明白怎么办?
答案 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。