为什么不是超过列表索引范围?

img


为什么x[-4::-1]==“果苹”,x不是只有两个元素吗,那-4在不是超出了索引范围吗,同理x[3:5]为什么等于“50”。d错在哪里?
参考书的答案是d,网上的答案是c,所以到底是什么?

切片是切片,不要和按索引取元素搞混了
切片范围是可以越界的,不会抛错误
再说了,x是个str啊,它里面是字符,怎么是只有2个了

x是字符串,怎么会只有两个元素呢

x是字符串,所以我们应该看它有多长。
x[-4::-1]步长是-1,所以是按倒序来取值的;-4表示从倒数第四个字符开始,也就是果。
x[3:5]表示从索引值3开始,取(5-3)=2个字符,所以是“50”

答案是D而不是C。
z[y[0]] == 50,y[0] = "苹果"

y[1] in z其实是False
而y[0] in z才是True
因为对于字典类型,如果用in, 其实查找的是在这个dict的keys()里查找,而不是values()里查找。