用 'for' 枚举。为什么不报错?

Enumerate with 'for'. Why doesn't it make an error?

我知道枚举函数分别给出一个索引和元素。

for idx, batch in enumerate(['A', 'B', 'C']):
   print(batch[0]) 

结果:

A
B
C

没问题,而

print(batch[1]) 

获取错误,字符串索引超出范围。

我想问的是,

for idx, batch in enumerate(['A', 'B', 'C']):
   print(batch[0:6]) 

得到结果

A
B
C

特别是,它不仅适用于 6. 7,8 或任何大于 0(整数)的结果。

另外,batch[0:0]也没有出错。这是为什么?

这与字符串切片运算符的行为有关:

当您枚举字符串列表时,切片运算符作用于每个字符串。当切片运算符中的边界之一超出字符串的边界时,不会引发异常。切片运算符的边界被默默地纠正。

例如,假设我们有字符串:

s = 'Hello World!'

那么 s[6:20] 将生成 'World!',即使 20 超出了字符串的上限。