
In Python können Sie eine neue Liste generieren, indem Sie Elemente extrahieren, entfernen, ersetzen oder konvertieren, sterben die Bedingungen einer vorhandenen Liste mit Listenverständnissen erfüllen.
Dieser Artikel hat folgenden Inhalt.
- Grundlagen des Hörverständnisses
- Operation auf alle Elemente der Liste anwenden
- Elemente, die sterben Bedingungen erfüllen, aus der Liste extrahieren/entfernen
- Elemente ersetzen/konvertieren, sterben sterben Bedingungen in der Liste erfüllen
Im following Artikel FINDEN SIE Beispiele für Zeichenfolgenlisten.
Es ist auch möglich, Elemente aus einer Liste zufällig auszuwählen.
Nehmen Sie die folgende Liste als Beispiel.
l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
Grundlagen des Hörverständnisses
In Python können Sie eine Liste mit Listenverständnissen erstellen. Es ist als die einfachere Verwendung der For-Schleife.
[expression for variable_name in iterable if condition]
expression WIRD Auf Die Elemente Angewandt, Die Bedingung Iterable (Liste, Tupel usw.) Erfüllen, Und Eine Neue Liste Wird Generiert. wenn Bedingung weggelassen Werden kann, WIRD Ausdruck auf alle Elemente angewendet, wenn sie weggelassen WIRD.
Im following Artikel FINDEN SIE Notebooks zu Listenverständnissen.
Operation auf alle Elemente der Liste anwenden
Wenn Sie die gewünschte Operation in den Ausdrucksteil von List Comprehensions schreiben, WIRD this Operation auf alle Elemente der Liste anwenden.
l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']
Sie können sterben verwenden, um eine Liste von Zahlen in eine Liste von Zeichenfolgen umzuwandeln. Nichts finden Sie im folgenden Artikel.
Wenn SIE Elemente nur nach Bedingung auswählen möchten, & SIE nicht mit Ausdruck verarbeiten, sodass SIE wie folgt schreiben können.
[variable_name for variable_name in original_list if condition]
Nur die Elemente, die die Bedingungen erfüllen (Elemente, die True für Bedingung zurückgeben), werden extrahiert, und eine neue Liste wird generiert.
l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]
l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]
If die if-Bedingung in if not-Bedingung geändert WIRD, Werden nur Elemente gesichert, die sterben Bedingung nicht erfüllen (Elemente, die False für Bedingung zurückgeben). Dies entspricht dem Entfernen von Elementen, sterben sterben Bedingung erfüllen.
l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
Natürlich können SIE auch ohne nicht eine entsprechende Bedingung angeben.
l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
Sie können auch mehrere Bedingungen mit oder oder und verbinden. Verneinung nicht kann auch verwendet werden.
l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]
l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]
Elemente ersetzen/konvertieren, sterben sterben Bedingungen in der Liste erfüllen
Wenn SIE Elemente, sterben sterben Bedingung erfüllen, ersetzen oder konvertieren möchten, ohne Elemente zu ändern, sterben sterben Bedingung nicht erfüllen, verwenden Sie bedingte Ausdrücke im Ausdrucksteil der Listenverständnisse.
In Python können bedingte Ausdrücke wie folgt geschrieben werden:
X ist Wert oder Ausdruck für True und Y ist Wert oder Ausdruck für False.
a = 80
x = 100 if a > 50 else 0
print(x)
# 100
b = 30
y = 100 if b > 50 else 0
print(y)
# 0
Verwenden Sie Listenverständnisse und bedingte Ausdrücke:
[X if condition else Y for variable_name in original_list]
Der in Klammern eingeschlossene Teil sind bedingte Ausdrücke. Im eigentlichen Code sind keine Klammern erforderlich.
[(X if condition else Y for variable_name) in original_list]
Wenn SIE Variablenname in X oder Y schreiben, WIRD der Wert des ursprünglichen Elements verwendet, und wenn SIE Ausdruck schreiben, WIRD dieser Ausdruck angewendet.
l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]
l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]
l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]
l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]