关于Python列表切片结果的困惑

elg*_*noh 2 python list

我是Python的新手,我从一个简单的列表切片操作得到的以下输出混淆了我的jebuse.

这是代码.

>>> a = [1,2,3,4];
>>> a[1:3]
[2, 3]

>>> a[3]
4
Run Code Online (Sandbox Code Playgroud)

不应该a[1:3]返回[2,3,4]而不是[2,3]

Lev*_*von 9

a[1:3]指定半闭区间,这意味着它包括从第一个指定索引开始的值,但不包括第二个索引处.

因此,在这种情况下,a[1:3]意味着片包括a[1]a[2],但 a[3]

您在使用range()函数时看到了相同的内容.例如

 range(1, 5)
Run Code Online (Sandbox Code Playgroud)

将生成1到4的列表,但包括5.

这与许多编程语言中的工作方式非常一致.