Python ist3 TypeError: list indices must be integers oder Scheiben, nicht str
ich habe die Aufgabe bekommen die Zeichenkette 'AAAABBBCCDAABBB'
in eine Liste wie diese: ['A','B','C','D','A','B']
Arbeite ich seit 2 Stunden jetzt und ich kann nicht Holen Sie sich die Lösung. Das ist mein code bisher:
list = []
string = 'AAAABBBCCDAABBB'
i = 1
for i in string:
list.append(i)
print(list)
for element in list:
if list[element] == list[element-1]:
list.remove(list[element])
print(list)
Ich bin ein Neuling auf Programmierung, und die Fehlermeldung "TypeError: list indices must be integers oder Scheiben, nicht str" immer zeigt sich...
Ich bereits geändert, der Vergleich
if list[element] == list[element-1]
zu
if list[element] is list[element-1]
Aber der Fehler bleibt der gleiche. Ich habe schon gegoogelt, ein paar mal, aber immer wieder gab es Listen, die nicht brauchen, die string-format, aber ich brauche es (bin ich richtig?).
Danke für die Hilfe!
NoAbL
- element ist ein
string
, Indizes eines durchsuchbar sein müssen, zahlen keine strings - In
element in list
,element
ist ein element in der Liste nicht eine Liste-index. Wenn Sie möchten, dass der index, verwenden Siefor index in range(len(list))
oderfor index,element in enumerate(list)
.
InformationsquelleAutor NoAbL | 2016-03-12
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst nicht benennen Sie Ihre Variablen nach gebaut in python-Anweisungen oder Datenstrukturen wie
list
,tuple
oder sogar den Namen eines Moduls importieren, dies gilt auch für Dateien. zum Beispiel benennen Sie Ihre Dateisocket.py
- und Import dersocket
Modul ist definitiv zu einem Fehler führen (ich werde dich verlassen, um zu versuchen, dass aus dir selbst heraus)in Ihrem code
element
ist ein string, Indizes eines durchsuchbar sein müssen, zahlen keine strings, damit du weißt, pythongib mir das item an position 2.
aber jetzt bist du versucht zu sagen, gib mir das Element an position
A
und das ist gar nicht gültig in Englisch, sprechen-weniger eine Programmiersprache.sollten Sie die
enumerate
Funktion, wenn Sie möchten, um Indizes von einem iterierbar wie Sie die Schleife durch Sie oder können Sie einfachSchleife durch die Auswahl der Länge der Liste, die Sie nicht wirklich brauchen, die Elemente sowieso.
Hier ist ein einfacher Ansatz zu dem, was Sie tun möchten
Es ist ein anderer Ansatz, aber dein problem kann gelöst werden, mit
itertools.groupby
wie folgt:Ausgabe
Laut der Dokumentation
groupby
:In meinem Beispiel verwenden wir eine Liste Verständnis zum Durchlaufen der aufeinander folgenden Tasten und Gruppen, und verwenden Sie den index
0
extrahieren der Schlüssel.Können Sie versuchen, den folgenden code:
Ausgabe:
In der Schleife,
element
ist der string. Sie wollen die index.Versuchen
for i, element in enumerate(list)
.EDIT:
i
wird nun der index deselement
Sie gerade Durchlaufen.['A','B','C','D','A','A','B','B','B']