index einer liste herrausfinden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
acoolon
User
Beiträge: 27
Registriert: Samstag 2. August 2008, 20:16

index einer liste herrausfinden

Beitragvon acoolon » Donnerstag 18. September 2008, 12:28

Guten Tag ;)

ich wollte mal nachfragen, ob es eine Intelligentere Lösung (und ich bin sicher es gibt eine :)) für dashier gibt:

Code: Alles auswählen

>>> a = ['j','P','s','e']
>>> b = 0
>>> for i in a:
     if i == 's':
        print b,i
     b+=1
2 s

(ich will, dass die Indexzahl des Listeneintrages angezeigt wird, den ich suche)

das funktioniert zwar, sieht aber scheisse aus, und man muss immer ein a,b, sonstwas als Zaehler erzeugen...

mfg
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 18. September 2008, 12:47

Code: Alles auswählen

a.index('s')
My god, it's full of CARs! | Leonidasvoice vs Modvoice
acoolon
User
Beiträge: 27
Registriert: Samstag 2. August 2008, 20:16

Beitragvon acoolon » Donnerstag 18. September 2008, 12:54

who, ok....das war jetzt simpel

vielen dank...


mfg
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Donnerstag 18. September 2008, 13:34

Du musst allerdings aufpassen wenn du den Index eines Wertes willst der mehrmals in der Liste steht, denn Index gibt nur den 1. Index zurück.

Übrigens brauchst du keinen eigenen Zähler:

Code: Alles auswählen

for index, value in enumerate(list):
    ...
acoolon
User
Beiträge: 27
Registriert: Samstag 2. August 2008, 20:16

Beitragvon acoolon » Donnerstag 18. September 2008, 14:02

Ja, das sieht eher nach dem aus, was ich dachte...aber mit index() geht es ja zum grossen teil auch..danke euch beiden
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Donnerstag 18. September 2008, 14:59

... 'index()' hat ja auch noch Argumente für
den Start- und Endindex ...

Falls Du eine Liste aller Indextreffer brauchst
und List-Comprehensions nicht scheust,
geht auch noch:

Code: Alles auswählen

In [66]: seq = 'jPsesbys'

In [67]: val = 's'

In [68]: [i for i in [i if (lambda v, x: v == x)(val, x) else -1 for i, x in enumerate(seq)] if i >= 0]
Out[68]: [2, 4, 7]


:wink:
yipyip
BlackJack

Beitragvon BlackJack » Donnerstag 18. September 2008, 15:55

Man kann's auch übertreiben. "list comprehension" ist nämlich in der Tat eine einfache, saubere Lösung um alle Indizes zu ermitteln:

Code: Alles auswählen

In [29]: [i for i, x in enumerate(seq) if x == val]
Out[29]: [2, 4, 7]
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Donnerstag 18. September 2008, 16:02

Stimmt, da bin ich arg über's Ziel hinausgeschossen...

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]