在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]
答案 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。
(强调我的)
当i
和j
都0
时(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,这是空的