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

时间:2012-07-09 21:04:57

标签: python list

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

这是代码。

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

>>> a[3]
4

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

4 个答案:

答案 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内容。