使用Python中的索引向后循环?

时间:2009-05-15 17:17:06

标签: python loops

我试图从100循环到0.如何在Python中执行此操作?

for i in range (100,0)不起作用。

16 个答案:

答案 0 :(得分:329)

尝试range(100,-1,-1),第三个参数是要使用的增量(记录为here)。

答案 1 :(得分:175)

在我看来,这是最具可读性的:<​​/ p>

for i in reversed(xrange(101)):
    print i,

答案 2 :(得分:29)

for i in range(100, -1, -1)

和一些稍长(和较慢)的解决方案:

for i in reversed(range(101))

for i in range(101)[::-1]

答案 3 :(得分:15)

通常在Python中,您可以使用负数索引从后面开始:

numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
    print numbers[-i - 1]

结果:

50
40
30
20
10

答案 4 :(得分:5)

另一种解决方案:

z = 10
for x in range (z):
   y = z-x
   print y

结果:

10
9
8
7
6
5
4
3
2
1

提示: 如果使用此方法对列表中的索引进行倒计时,则需要从“y”值开始-1,因为列表索引将从0开始。

答案 5 :(得分:5)

为什么您的代码不起作用

您的代码for i in range (100, 0)没问题,除了

第三个参数(step)默认为+1。因此,您必须将range()的第3个参数指定为-1以向后退。

for i in range(100, -1, -1):
    print(i)

注意:这包括100&amp;输出中为0。

有多种方式。

更好的方式

对于pythonic方式,请检查PEP 0322

这是Python3 pythonic示例,从100打印到0(包括100&amp; 0)。

for i in reversed(range(101)):
    print(i)

答案 6 :(得分:3)

解决问题的简单答案可能是这样的:

for i in range(100):
    k = 100 - i
    print(k)

答案 7 :(得分:2)

短而甜蜜。这是我在执行codeAcademy课程时的解决方案。以rev顺序打印字符串。

def reverse(text):
    string = ""
    for i in range(len(text)-1,-1,-1):
        string += text[i]
    return string    

答案 8 :(得分:1)

for var in range(10,-1,-1)有效

答案 9 :(得分:1)

您可以随时增加范围并从100 - i i in range( 0, 101 )中的变量中减去。

for i in range( 0, 101 ):
    print 100 - i

答案 10 :(得分:0)

我在其中一个codeacademy练习中尝试了这个(在字符串中反转字符而不使用反转也不是:: -1)

def reverse(text):
    chars= []
    l = len(text)
    last = l-1
    for i in range (l):
        chars.append(text[last])
        last-=1

    result= ""   
    for c in chars:
        result += c
    return result
print reverse('hola')

答案 11 :(得分:0)

我想同时向后遍历两个列表,所以我需要负索引。这是我的解决方案:

a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
    print(i, a[i])

结果:

-1 2
-2 5
-3 4
-4 3
-5 1

答案 12 :(得分:0)

哦,好的,您看错了问题,我想这是关于在数组中向后移动吗?如果是这样,我有这个:

array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]


counter = 0   

for loop in range(len(array)):
    if loop <= len(array):
        counter = -1
        reverseEngineering = loop + counter
        print(array[reverseEngineering])

答案 13 :(得分:0)

您可能想在python中使用reversed函数。 在进入代码之前,我们必须记住range 函数始终返回列表(或我不知道的元组),因此range(5)将返回[0, 1, 2, 3, 4]reversed函数会反转列表或元组,因此reversed(range(5))将是[4, 3, 2, 1, 0],因此您的解决方案可能是:

for i in reversed(range(100)):
    print(i)

答案 14 :(得分:-1)

您还可以在python中创建自定义反向机制。可以在任何地方用于循环迭代向后

class Reverse:
    """Iterator for looping over a sequence backwards"""
    def __init__(self, seq):
        self.seq = seq
        self.index = len(seq)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index -= 1
        return self.seq[self.index]


>>> d = [1,2,3,4,5]
>>> for i in Reverse(d):
...   print(i)
... 
5
4
3
2
1

答案 15 :(得分:-2)

a = 10
for i in sorted(range(a), reverse=True):
    print i