2017-03-02 5 views
2

Ich versuche, jeden Buchstaben mit einem Index von% 12 = 0 in eine separate Zeichenfolge zu setzen. Aber aus irgendeinem Grund druckt es den ersten Buchstaben der Saite zweimal? Zu Ihrer Information: Der Code ist wirklich einfach, ich bin nicht großartig im Codieren, aber ich versuche, besser zu werden. Vielen Dank.(Python) Erster Buchstabe der Zeichenfolge zweimal drucken

string1 = 'nfhcizhfpntxolaqhpgvjehzsw' 

final = ' ' 

for letter in string1: 
    if (string1.index(letter) % 12 == 0): 
     final = final + letter 
     print (letter) 

Es gibt die folgenden: nnos

Wenn es sein sollte: nos

+2

Warum verwenden Sie nicht Slice? 'final = string1 [:: 12]' – falsetru

Antwort

8

index die erste Auftreten des Briefes in der Zeichenfolge zurückgibt.

Da n vorhanden ist an erster Stelle (es funktioniert), sondern auch an einer anderen Stelle, den zweiten Anruf auch 0 zurück und der Brief dupliziert werden (es hat auch eine böse O(n**2) Komplexität, weil es von Anfang an jedes Mal sucht selbst wenn es funktioniert)

der richtige Weg ist:

string1[::12] 

Scheiben die Zeichenfolge jedes 12. Zeichen nehmen aus dem Index ausgehend 0. vermeidet auch die hässliche und underperformant String-Verkettung

+0

Danke für die Hilfe! Es funktioniert jetzt. Nur aus Neugierde, was genau macht [:: 12]? –

+0

sehe meine Bearbeitung. String-Schneiden. –

Verwandte Themen