55 Stimmen

Ermitteln des ersten Listenindex, der eine Teilzeichenkette enthält?

Für Listen wird die Methode list.index(x) gibt den Index in der Liste des ersten Elements zurück, dessen Wert x . Aber wenn ich innerhalb der Listenelemente sehen wollen, und nicht nur auf die gesamte Elemente, wie mache ich die meisten Pythoninc Methode für diese?

Zum Beispiel, mit

l = ['the cat ate the mouse',
     'the tiger ate the chicken',
     'the horse ate the straw']

würde diese Funktion Folgendes zurückgeben 1 versehen mit dem Argument tiger .

2voto

abyx Punkte 65176
def first_substring(strings, substring):
    return min(i for i, string in enumerate(strings) if substring in string)

Hinweis: Dies führt zu einer ValueError für den Fall, dass keine Übereinstimmung gefunden wird, was meiner Meinung nach besser ist.

2voto

Guido Punkte 56

Imho findet man mit dieser Zeile nur das erste Vorkommen, ohne die gesamte Liste zu bearbeiten

index = next((i for i in enumerate(l) if "tiger" in i[1]),[-1,-1])[0]

1voto

citynorman Punkte 4182

Ich wollte nur den Text erhalten und keine Ausnahme auslösen, wenn das Element nicht gefunden wurde

search = 'a'
next((s for s in ["aa",'c'] if search in s), None)

search = 'b'
next((el for el in ["aa",'c'] if search in el), None)

Das ist eines der Dinge, von denen ich mir wünschte, sie wären von Haus aus implementiert.

0voto

Pawel Punkte 399
  >>> li = ['my','array','with','words']
  >>> reduce(lambda tup, word: (tup[0], True) if not tup[1] and word  == 'my' else (tup[0]+1 if not tup[1] else tup[0], tup[1]), li, (0, False))[0]
  0
  >>> reduce(lambda tup, word: (tup[0], True) if not tup[1] and word  == 'words' else (tup[0]+1 if not tup[1] else tup[0], tup[1]), li, (0, False))[0]
  3

0voto

Michael Gx Ou Punkte 1

Verwendung der Kartenfunktion:

index = np.nonzero(map(lambda x: substring in x, strings))[0][0]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X