从头开始切片

时间:2015-10-01 09:31:35

标签: python string slice

在Python中:

s = "Gwen Stefani"
a = s[:0]
b = s[0]

print type(a) # str
print type(b) # str
print len(a)  # 0
print len(b)  # 1

我知道s[:0]是空的,但它也意味着从字符串的开头,所以我会想到:

s[:0] is the same as s[0]

3 个答案:

答案 0 :(得分:1)

您可以在https://docs.python.org/2/tutorial/introduction.html#strings阅读有关字符串切片的行为,其中包括如何解释索引的说明。

特别指出:

  

记住切片如何工作的一种方法是将索引视为指向字符之间,以及第一个字符的左边缘   编号为0.然后是n个字符串的最后一个字符的右边缘   字符具有索引n,例如:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1
     

第一行数字给出了字符串中索引0 ... 6的位置;第二行给出相应的否定   指数。 从i到j的切片由所有字符组成   边缘分别标记为i和j。

强调我的

ij0时(i默认为0(如果未指定)),它们之间没有字符,因此结果substring是空字符串"",其类型为str,长度为0

答案 1 :(得分:0)

您必须了解切片的作用:

x = s[:n]

现在,x包含s [0],s [1],...,s [n-1],but not s[n]

的值

因此,s [:0]将索引0的值返回到0之前的索引,这是什么都没有。

答案 2 :(得分:0)

您采用的最后一个索引是指定数字之前的索引,即: a [x:y]表示从x到y-1:

In [4]: s[0:3]
Out[4]: 'Gwe'

所以你不是从零到0,你从0到负1,这是空的