in python: Iteration über jeden string in einer Liste

Im neu in python und ich brauche etwas Hilfe mit diesem.

AUFGABE : eine Liste --> words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']

ich vergleichen müssen das erste und das Letzte element jeder string in der Liste,
wenn das erste und das Letzte element in der Zeichenfolge ist das gleiche , dann erhöht Sie die Anzahl.

Vorgegebenen Liste ist :

words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']

Wenn ich versuche manuell, ich kann iteriert über jedes element des strings in der Liste.

words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']
w1 = words[0]
print w1
aba

for i in w1:
   print i

a
b
a

if w1[0] == w1[len(w1) - 1]:
   c += 1
   print c

1

Aber, Wenn ich versuche zu iterieren über alle Elemente und alle strings in der Liste mit einer FOR-Schleife.

bekomme ich eine Fehlermeldung.

words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']
c = 0
for i in words:
     w1 = words[i]
     if w1[0] == w1[len(w1) - 1]:
       c += 1
     print c

FEHLER:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: list indices must be integers, not str

bitte lassen Sie mich wissen, wie kann ich erreichen, vergleicht man das erste und das Letzte element einer nicht. strings in der Liste.

Vielen Dank im Voraus.

  • Iteration über eine Liste gibt die Elemente, die nicht Indizes, daher der Fehler.
  • Ihr Python one-liner zu tun, was Sie wollen (aber nicht lösen oder erklären den bug) würde wie folgt Aussehen: c = sum([1 if w[0] == w[-1] else 0 for w in words]). Aber das wird nicht wirklich helfen Ihnen, bis Sie anfangen, das hängt von Liste-Verstehens (noch kürzer: c = sum([int(w[0] == w[-1]) for w in words])).
  • Sie können die drop - int anrufen und [] als gut.. 😉
  • Hm, ich weiß nicht, wie Boolesche Werte summieren, aber ich denke, implizite Konvertierung funktioniert hier. Ich ließ es stehen, sonst wird Ihr Kommentar nicht Sinn machen ;-).
InformationsquelleAutor user3168141 | 2014-01-07
Schreibe einen Kommentar