我是Python的新手,我从一个简单的列表切片操作得到的以下输出混淆了我的jebuse。
这是代码。
>>> a = [1,2,3,4];
>>> a[1:3]
[2, 3]
>>> a[3]
4
不应该a[1:3]
返回[2,3,4]
而不是[2,3]
?
答案 0 :(得分:9)
a[1:3]
指定半闭区间,这意味着它包含从 1st 指定索引开始的值,但不包括,位于 2nd 索引处。
因此,在这种情况下,a[1:3]
表示切片包含a[1]
和a[2]
,但不是 a[3]
您在使用range()函数时看到了相同的内容。例如
range(1, 5)
将生成1到4的列表,但不包含5。
这与许多编程语言中的工作方式非常一致。
答案 1 :(得分:1)
切片返回(但不包括)第二个切片索引。
答案 2 :(得分:1)
slice的文档可能有所帮助。
切片([开始],停止[,步骤])
返回表示的切片对象 由range(start, stop, step)
指定的索引集。
大多数人都熟悉的切片格式只是一种简写:
a[start:stop:step]
答案 3 :(得分:0)
你有一些关于它是如何工作的好答案,这里有一个原因:
a ='0123456789' 一个[2:4] '23' 一个[4:6] '45' 一个[6:8] '67'
IOW,它可以让您轻松地逐步浏览列表或字符串或元组n个字符,而不会浪费时间在大多数语言中所需的+1 / -1内容。