For循环以“ c”而不是“ d”开头

问题描述 投票:-4回答:4
   s="abcd" 
   for i in range(len(s)-1)[::-1]: 
        print(s[i]) 

我不知道此for循环如何工作?

python for-loop reverse
4个回答
2
投票

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

范围类型表示数字的不变序列,通常用于在for循环中循环特定次数。 (取自python docs)。

有关进一步的阅读,请转到python docs: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在幕后的作用!


0
投票

所以您的范围从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]) 

0
投票

因为您的范围将转换为range(2,-1,-1)。您只需要从范围(len s -1)[::-1]中删除-1。


0
投票

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

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

[(0, 1, 2)[::-1]产生(2, 1, 0)

因此for循环将在s[i]中为i打印(2, 1, 0),结果为cba

© www.soinside.com 2019 - 2024. All rights reserved.