For 循环以 "c" 而不是 "d" 开始

For loop starts with "c" instead of "d"

   s="abcd" 
   for i in range(len(s)-1)[::-1]: 
        print(s[i]) 

我不明白这个 for 循环是如何工作的?

所以你的范围从 0 到 2 (len(s)-1) - 1[::-1] 反转范围发送的任何内容。

所以你的循环从 2 到 1 再到 0

s = "abcd"

for 2 > it prints c
for 1 > it prints b
for 0 > it prints a

如果你想从 d:

s="abcd" 
for i in range(len(s))[::-1]: 
    print(s[i]) 

这是因为您的范围被转换为range(2, -1, -1)。您只需要从 range (len(s) -1)[::-1].

中删除 -1

class 范围(开始,停止[,步骤])

range类型表示一个不可变的数字序列,通常用于在for循环中循环特定次数。 (取自 python 文档)。

如需进一步阅读,请转到 python 文档:range

阅读以上内容(摘自 python 文档)并打印表达式后:range(len(s)-1)[::-1],

print(range(len(s)-1)[::-1])

产生:

range(2, -1, -1)

所以我们的代码变成了:

   s="abcd" 
   for i in range(2, -1, -1): 
        print(s[i]) 

现在我希望您了解 python 在幕后做了什么!

对于 s="abcd" 我们有 len(s)-1 等于 3.

range(3) 生成 (0, 1, 2).

(0, 1, 2)[::-1] 结果为 (2, 1, 0)

因此 for 循环将打印 s[i] for i in (2, 1, 0),结果是 cba.