Beide generieren Listen, werden aber unterschiedlich verwendet, daher werde ich sie leicht zusammenfassen.
Eine der gebräuchlichsten Methoden, um kartenähnliche Methoden zu schreiben. Python hat auch eine Kartenmethode, aber das Einfügen von Listen ist schneller. Verwenden wir diese Methode.
Listeneinschlussnotation
names = ['Alice', 'Bob', 'Carl', 'Dave']
[name[0] for name in names] # => ['A', 'B', 'C', 'D']
Kartenmethode
names = ['Alice', 'Bob', 'Carl', 'Dave']
map(lambda name: name[0], names) # => ['A', 'B', 'C', 'D']
Es kann verwendet werden, wenn Sie eine neue Liste von Elementen erstellen möchten, die die Bedingungen aus der Liste erfüllen. Es ist möglich, mehrere Bedingungen zu schreiben, indem Sie fortfahren, wenn, und natürlich können Sie auch mit und schreiben.
names = ['Alice', 'Bob', 'Carl', 'Dave']
[name for name in names if len(name) == 4] # => ['Carl', 'Dave']
[name for name in names if not len(name) == 4] # => ['Alice', 'Bob']
[name for name in words if not len(name) == 4 if len(name) < 5] # => ['Bob']
[name for name in words if not len(name) == 4 and len(name) < 5] # => ['Bob']
Mit zip können Sie aus mehreren Listen gleichzeitig eine neue Liste erstellen.
namesA = ['Alice', 'Bob', 'Carl', 'Dave']
namesB = ['Peter', 'Micheal', 'John', 'Harry']
[" ".join([x, y]) for x, y in zip(namesA, namesB)]
# => ['Alice Peter', 'Bob Micheal', 'Carl John', 'Dave Harry']
Mehrere Schleifen können durch Überlappen von ausgedrückt werden.
namesA = ['Alice', 'Bob', 'Carl', 'Dave']
namesB = ['Peter', 'Micheal', 'John', 'Harry']
[" ".join([x, y]) for x in namesA for y in namesB]
# => ['Alice Peter',
# 'Alice Micheal',
# 'Alice John',
# 'Bob Peter',
# 'Bob Micheal',
# 'Bob John',
# 'Carl Peter',
# 'Carl Micheal',
# 'Carl John',
# 'Dave Peter',
# 'Dave Micheal',
# 'Dave John']
Der Generator kann Elemente aus den definierten Ausdrücken generieren. Sie können den Wert mit next vom Generator abrufen.
g = (x ** 2 for x in range(5))
next(g) # => 0
next(g) # => 1
next(g) # => 4
next(g) # => 16
next(g) # StopIteration
Mit einem Generator können Sie die Generierung von Werten beenden, wenn die Bedingungen erfüllt sind. Es gibt jedoch auch andere Verwendungszwecke.
Bonus itertools
Es gibt ein Python-Modul namens itertools, das Methoden zum Generieren von Iteratoren implementiert hat.
Zum Beispiel, wenn Sie Kombinationen aufzählen möchten
import itertools
itertools.combinations('ABCD', 2) # => (A,B) (A,C) (A,D) (B,C) (B,D) (C,D)
Beachten Sie, dass dadurch nur ein Iterator erstellt wird, keine Liste.
Hier können Sie eine so kleine Notation lernen, während Sie Probleme lösen. Udacity Design of computer programming
Blog macht (oder versucht) maschinelles Lernen mit Python Aufwand 1mm Blog
Recommended Posts