使用索引进行反向循环

我试着从100循环到0。在Python中如何做到这一点?

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

472900 次浏览

尝试range(100,-1,-1),第三个参数是要使用的增量(已文档化的在这里)。

("range"选项,start, stop, step有文档在这里)

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

还有一些稍长的(慢的)解决方案:

for i in reversed(range(101))


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

在我看来,这是最有可读性的:

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

通常在Python中,你可以使用负号从后面开始:

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

结果:

50
40
30
20
10

另一个解决方案:

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

结果:

10
9
8
7
6
5
4
3
2
1
< p >提示: 如果你使用这个方法来计数列表中的索引,你会想要从y的值开始-1,因为你的列表索引将从0开始

for var in range(10,-1,-1)作品

我在代码学院的一个练习中尝试了这一点(在字符串中反转字符而不使用反转或::-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')

又短又甜。这是我在做codeAcademy课程时的解决方案。按rev顺序打印字符串。

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

为什么你的代码不能工作

你编码for i in range (100, 0)很好,除了

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

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

注:这包括100 &输出为0。

有多种方法。

更好的方法

对于python方式,检查PEP 0322

这是一个Python3的python示例,输出从100到0(包括100 &0)。

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

你总是可以增加范围,并从变量100 - i中减去i in range( 0, 101 ). 0。

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

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

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

我想同时对两个列表进行反向循环,所以我需要负下标。这是我的解决方案:

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

哦,好吧,你的问题看错了,我猜是关于在数组中反向移动?如果是这样,我有这个:

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])

你也可以在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
你可能想在python中使用reversed函数。 在我们进入代码之前,我们必须记住range function总是返回一个列表(或者一个我不知道的元组),所以range(5)将返回[0, 1, 2, 3, 4]reversed函数反转列表或元组,因此reversed(range(5))将是[4, 3, 2, 1, 0],因此您的解决方案可能是:

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

这对我很管用

for i in range(5)[::-1]:
print(i,end=' ')

输出:4 3 2 10 0