Achterwaarts doorlopen met indices in Python?

Ik probeer een lus van 100 naar 0 te maken. Hoe doe ik dit in Python?

for i in range (100,0)werkt niet.


Antwoord 1, autoriteit 100%

Probeer range(100,-1,-1), waarbij het derde argument de te gebruiken toename is (gedocumenteerd hier).

(“range” opties, start, stop, step zijn gedocumenteerd hier)


Antwoord 2, autoriteit 46%

Naar mijn mening is dit de meest leesbare:

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

Antwoord 3, autoriteit 9%

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

en een iets langere (en langzamere) oplossing:

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

Antwoord 4, autoriteit 4%

Over het algemeen kun je in Python negatieve indices gebruiken om vanaf de achterkant te beginnen:

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

Resultaat:

50
40
30
20
10

Antwoord 5, autoriteit 3%

Waarom uw code niet werkte

Je codeert for i in range (100, 0)is prima, behalve

de derde parameter (step) is standaard +1. U moet dus de 3e parameter voor bereik() specificeren als -1om achteruit te gaan.

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

Opmerking: dit omvat 100 & amp; 0 in de uitvoer.

Er zijn meerdere manieren.

betere manier

Voor Pythonic Way, controleer PEP 0322 .

Dit is Python3 Pythonic-voorbeeld om af te drukken van 100 tot 0 (inclusief 100 & amp; 0).

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

Antwoord 6

een andere oplossing:

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

Resultaat:

10
9
8
7
6
5
4
3
2
1

TIP:
Als u deze methode gebruikt om indexcijfers in een lijst te tellen, wilt u – 1 van de ‘Y’-waarde, omdat uw lijstindices beginnen bij 0.


Antwoord 7

Het eenvoudige antwoord om uw probleem op te lossen, kan zo zijn:

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

Antwoord 8

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


Antwoord 9

Kort en lief. Dit was mijn oplossing bij het uitvoeren van codeaccademie. Drukt een string in REV-bestelling af.

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

Antwoord 10

U kunt altijd het bereik doen en aftrekken van een variabele in uw geval 100 - iwaar i in range( 0, 101 ).

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

Antwoord 11

Ik wilde tegelijkertijd twee lijsten achteruit doorlopen, dus ik had de negatieve index nodig. Dit is mijn oplossing:

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

Resultaat:

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

Antwoord 12

Ik heb dit geprobeerd in een van de codeacademy-oefeningen (tekens in een string omkeren zonder reversed noch :: -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')

Antwoord 13

O, oké, ik heb de vraag verkeerd gelezen, ik denk dat het gaat over achteruit gaan in een array? zo ja, dan heb ik dit:

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

Antwoord 14

Misschien wilt u de functie reversedgebruiken in python.
Voordat we in de code springen, moeten we onthouden dat het range
functie retourneert altijd een lijst (of een tuple die ik niet ken), dus range(5)retourneert [0, 1, 2, 3, 4]. De functie reversedkeert een lijst of een tuple om zodat reversed(range(5))[4, 3, 2, 1, 0]dus uw oplossing zou kunnen zijn:

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

Antwoord 15

Je kunt ook een aangepast omkeermechanisme maken in Python. Die overal kan worden gebruikt om een iterable achteruit te herhalen

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

Antwoord 16

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

Other episodes