向各位大佬们请教一个关于字符串切片和索引的问题

向各位大佬们请教一个关于字符串切片和索引的问题

问题描述:

如下代码

a=''
a[0]

运行之后会有如下报错提示

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a[0]
IndexError: string index out of range

但是如果我把代码改成这样,却能够正常运行

a=''
a[:1]

我想知道a[0]和a[:1]之间有什么区别,为什么上述代码a[0]不可以运行,而a[:1]却可以正常运行?

访问索引的话 a[0] 如果a没有索引为0的元素,会报错。
而切片的话 a[:1] 如果切片结束的值大于a字符串(或列表)的长度,并不会报错,而是会把切片结束的值自动替换为a字符串(或列表)的长度。
 

这是python中切片索引的情况。

用list来说明:

a = [1, 2, 3]

a【4】就会报错, a【:4】就不会

前者是索引, 后者是切片。是不同的东西。

你那个空串也是一样的道理。

只要知道是两种不同的东西即可。

 

另外,索引、和切片的赋值也有一些知识点哦。

a=“”里面为空,所以a[0]肯定也是空,相当于根本没有元素,肯定就不能找到索引为0的元素;

而a[:1]是把索引为1前面的全部拿出来,且不包括索引1