2013-03-28 10 views
28

Piszę prostą pętlę Python for prnt do bieżącego znaku w ciągu znaków. Jednak nie mogłem uzyskać indeksu postaci. Oto, co mam, czy ktoś zna dobry sposób na uzyskanie aktualnego indeksu postaci w pętli?Python Aby uzyskać indeks pętli

loopme = 'THIS IS A VERY LONG STRING WITH MANY MANY WORDS!' 

for w in loopme: 
    print "CURRENT WORD IS " + w + " AT CHARACTER " 
+1

oprócz kwestii numeracji, jesteś pewien, że to, co chcesz? 'w' jest bieżącym znakiem, a nie słowem. –

Odpowiedz

62

Użyj enumerate() function aby wygenerować indeks wraz z elementami sekwencji Jesteś zapętlenie nad:

for index, w in enumerate(loopme): 
    print "CURRENT WORD IS", w, "AT CHARACTER", index 
+0

tak z funkcją enumerate(), musisz zdefiniować dwie zmienne? jeden dla indeksu i jeden dla postaci? – user1817081

+0

@ user1817081: Nie musisz * mieć *; teraz zapętlasz coś, co daje krotki z dwiema wartościami. Korzystanie z rozpakowywania krotek po prostu ułatwia ich "odbieranie". –

+2

@ user1817081: Możesz także zrobić 'dla elem w enumerate (loopme)', następnie użyj 'elem [[0]' dla wartości indeksu i 'elem [1]' dla postaci, ale to jest po prostu bardziej kłopotliwe. –

4

chcesz iteracyjne nad znaków lub słów?

Dla słowy, musisz najpierw rozdzielić słowa, takie jak

for index, word in enumerate(loopme.split(" ")): 
    print "CURRENT WORD IS", word, "AT INDEX", index 

Drukuje indeks słowa.

Dla absolutnej pozycji znaku, że trzeba coś takiego

chars = 0 
for index, word in enumerate(loopme.split(" ")): 
    print "CURRENT WORD IS", word, "AT INDEX", index, "AND AT CHARACTER", chars 
    chars += len(word) + 1 
Powiązane problemy