python中的范围长度

时间:2017-06-16 12:55:06

标签: python range

我试图制作一个反向拼写输入单词的程序。我终于得到了它的工作,但我不明白为什么它的工作原理。这是工作计划:

    def reverse(text):
    length = len(text)
    text = list(text)
    new = ["None"] * length
    for i in range(0, length):
        new[i] = text[length - i - 1]
    return "".join(new)
return new

不应该使i range(0, length)比原始字长一个字符吗?防爆。如果原始单词是四个字符,range(0, length)将是五个字符,不是吗?似乎范围应该是(0, length - 1),但这不起作用!有人可以解释一下原因吗?

3 个答案:

答案 0 :(得分:2)

Python范围直到到达它停止。

将范围写为for循环如下所示:

for i in range(a, b, c):

for (int i = a; i < b; i += c) {

所以它没有包括终点。

请注意,<表示它不包含b。您可能会将其视为<=

而且,在这种情况下,您可以使用内置的反向或切片[::-1](从最后到开始,每次都返回一个字符。)

另请注意,range(0, x)相当于range(x)

答案 1 :(得分:0)

一旦达到length,循环结束。例如

str1 = "hello"
length = len(str1) #length = 5  
for i in range(0,length) # will loop from 0 to 4.
    print(length)

输出:

0
1
2
3
4
在示例中,

循环将比长度

运行1

答案 2 :(得分:0)

我认为你正在学习Python(我也是,现在已经有20多年了 - 总是需要学习更多!)所以首先祝贺你自己编写了有效的代码!

如果您使用了字符串切片,那么您可能知道x[:]创建了序列x的新副本(字符串,列表和元组都被认为是序列),包含完全相同的元素。您甚至可能知道可以使用“步幅”作为切片的第三个元素。

您可能 知道的是,使用-1的步幅会向后迭代元素。因此,reverse函数的较短版本可能会读取

def reverse(x):
    return x[::-1]

对于较新的Python用户来说,发现他们一直在低效率地执行操作的有效方式并不常见,因此请考虑这不是对代码的批评,而是对可能改进的建议。