it-swarm.com.de

Mit Indizes in Python rückwärts gehen?

Ich versuche, eine Schleife zwischen 100 und 0 zu erstellen. Wie mache ich das in Python?

for i in range (100,0) funktioniert nicht.

199
Joan Venge

Versuchen Sie es mit range(100,-1,-1), wobei das dritte Argument das zu verwendende Inkrement ist (dokumentiert hier ).

308
0x6adb015

Meiner Meinung nach ist dies am lesbarsten:

for i in reversed(xrange(101)):
    print i,
166
Triptych
for i in range(100, -1, -1)

und etwas etwas längere (und langsamere) Lösung:

for i in reversed(range(101))

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

Im Allgemeinen können Sie in Python negative Indizes verwenden, um von hinten zu beginnen:

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

Ergebnis:

50
40
30
20
10
15
Blixt

Eine andere Lösung:

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

Ergebnis:

10
9
8
7
6
5
4
3
2
1

Tipp: Wenn Sie diese Methode zum Zurückzählen von Indizes in einer Liste verwenden, möchten Sie -1 vom Wert 'y' angeben, da Ihre Listenindizes bei 0 beginnen.

4
Andy T.

Die einfache Antwort zur Lösung Ihres Problems könnte folgendermaßen lauten:

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

Kurz und bündig. Dies war meine Lösung beim Codecademy-Kurs. Druckt eine Zeichenfolge in rev-Reihenfolge. 

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

Warum Ihr Code nicht funktioniert hat

Ihr Code for i in range (100, 0) ist in Ordnung, außer

der dritte Parameter (step) ist standardmäßig +1. Sie müssen also den dritten Parameter für range () als -1 angeben, um rückwärts zu gehen.

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

HINWEIS: Dies beinhaltet 100 & 0 in der Ausgabe.

Es gibt mehrere Möglichkeiten.

Besserer Weg

Überprüfen Sie für den Pythonic-Modus PEP 0322 .

Dies ist das Python3 Pythonic-Beispiel, um von 100 bis 0 (einschließlich 100 & 0) zu drucken.

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

for var in range(10,-1,-1) funktioniert

1
user2220115

Sie können den Bereich immer vergrößern und von einer Variablen in Ihrem Fall 100 - i abziehen, wobei i in range( 0, 101 )

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

Oh, okay, lies die Frage falsch, ich denke, es geht darum, in einem Array rückwärts zu gehen. wenn ja, habe ich das:

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

Ich habe dies in einer der Codecademy-Übungen ausprobiert (Umkehrung von Zeichen in einer Zeichenfolge ohne Verwendung von Umkehrung noch mit -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')
0
Tabula Rasa

Ich wollte zwei Listen gleichzeitig rückwärts durchlaufen, also brauchte ich den negativen Index. Das ist meine Lösung:

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

Ergebnis:

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