Als ich angefangen habe, Python zu lernen, habe ich beschlossen, eine Liste häufig verwendeter „Tipps“ zu führen. Immer wenn ich einen Code sehe, der mich denken lässt: „Cool, das funktioniert!“ (zum Beispiel auf StackOverflow, in Open-Source-Software usw.), probiere ich ihn aus, bis ich ihn verstehe, und füge ihn dann der Liste hinzu . Dieser Beitrag ist Teil einer bereinigten Liste. Wenn Sie ein erfahrener Python-Programmierer sind, entdecken Sie möglicherweise einige, die Sie noch nicht kennen, obwohl Sie einige bereits kennen. Wenn Sie ein C-, C- oder Java-Programmierer sind, der Python lernt oder gerade erst mit dem Programmieren beginnt, werden Sie viele davon sehr nützlich finden, so wie ich es getan habe.
Jeder Trick oder jede Sprachfunktion kann nur anhand von Beispielen ohne übermäßige Erklärung überprüft werden. Obwohl ich versucht habe, die Beispiele klar zu formulieren, werden einige von ihnen je nach Vertrautheit dennoch etwas kompliziert aussehen. Wenn Sie sich also nach dem Betrachten des Beispiels nicht sicher sind, kann der Titel genügend Informationen liefern, um den detaillierten Inhalt über Google zu erhalten.
Die Liste ist nach Schwierigkeitsgrad sortiert, wobei häufig verwendete Sprachfunktionen und -techniken ganz vorne stehen.
1.30 Maximale und minimale Elemente (heapq.nlargest und heapq.nsmallest)
>>> a = [random.randint(0, 100) for __ in xrange(100)]
>>> heapq.nsmallest(5, a)
[3, 3, 5, 6, 8]
>>> heapq.nlargest(5, a)
[100, 100, 99, 98, 98]
1.31 Kartesisches Produkt (itertools.product)
>>> für p in itertools.product([1, 2 , 3], [4, 5]):
(1, 4)
(1, 5)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
>>> für p in itertools.product([0, 1], wiederholen =4):
... print ''.join(str(x) for x in p)
...
0000
0001
0010
0011
0100 0
1001
1010
1011
1100
1101
1110
1111
1.32 Kombinationen und Ersetzungen von Kombinationen (itertools.combinations und itertools.combinations_with_replacement)
> >> für c in itertools.combinations([1, 2, 3, 4, 5], 3):
... print ''.join(str(x) for x in c)
...
123
124
125
134
135
145
234
235
245
345
>>> für c in itertools.combinations_with_replacement([1, 2, 3] , 2):
... print ''.join(str(x) for x in c)
...
11
12
13
22
23
33
1.33 Sorting(itertools.permutations)
>> > für p in itertools.permutations([1, 2, 3, 4]):
... print ''.join(str(x) for x in p)
. ..
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341 🎜>
2413 2431 3124 3142 3214 3241 34123421 4123 4132 4213 4231 4312 43211.34 Link-Iteration (itertools.chain)>>> a = [1, 2, 3 , 4] >>> für p in itertools.chain(itertools. combinations(a, 2), itertools.combinations(a, 3)): ... print p ... (1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3 , 4) (1, 2, 3) (1, 2, 4) (1, 3, 4) (2 , 3, 4) >>> für Teilmenge in itertools.chain.from_iterable(itertools.combinations(a, n) für n im Bereich(len(a) 1)) .. Teilmenge drucken ... () (1 ,) (2,) (3, ) (4,) (1, 2) ( 1, 3) (1, 4) (2, 3) (2, 4) (3, 4) (1, 2, 3) (1, 2 , 4) (1, 3, 4) (2, 3, 4) (1, 2, 3, 4) 1.35 Zeilen nach gegebenem Wert gruppieren (itertools.groupby) >>> vom Operator import itemgetter >>> itertools importieren >>> mit open('contactlenses .csv', 'r') als Infile: ... data = [line.strip().split (',') für Zeile in Infile] ... >>> data = data[1:] >>> def print_data(rows): ... print 'n'.join('t'. join('{: ... >>> print_data( data)
jung Kurzsichtigkeit nein keine
jung Kurzsichtigkeit nein normal weich
jung kurzsichtig reduziert keine
jung Kurzsichtigkeit ja normal
jung hypermetrope nein reduziert keine
jung hypermetrop normal jung. hypermetropisch ja reduziert keine hypermetropisch normal schwer
präpresbyope Myopie reduziert
Präpresbyopie nein normal weich
Präpresbyopie ja reduziert keine schwer
präpresbyopisch hypermetrop nein reduziert keine
präpresbyopisch hypermetrop nein normal weich
präpresbyopisch ja reduziert keine
präpresbyope hypermetrope keine
Presbyopie Kurzsichtigkeit nein reduziert keine
Presbyopie Kurzsichtigkeit nein normal keine
Presbyopie Myopie ja reduziert keine
Presbyopie ja normal schwer
presbyopisch hypermetropisch nein keine
presbyope hypermetrop nein normal hypermetrop ja reduziert keine
presbyopisch hypermetrop ja normal keine
>>> data.sort(key=itemgetter(-1))
>>> für Wert, Gruppe in itertools.groupby(data, lambda r: r[-1]):
... print '-----------'
. .. print 'Group: ' value
... print_data(group)
...
-----------
Gruppe: schwer
jung kurzsichtig ja normal Hypermetropie ja normal schwer
präpresbyope normal hart
Presbyopie Kurzsichtigkeit ja normal hart
-----------
Gruppe: keine
jung kurzsichtig nein reduziert keine
jung Kurzsichtigkeit ja reduziert keine
jung hypermetrop nein keine
jung ja reduziert keine
präpresbyope nein keine
präpresbyope Myopie ja reduziert keine
präpresbyopisch hypermetropisch nein reduziert keine
präpresbyopisch hypermetropisch ja reduziert keine
präpresbyopisch hypermetropisch normal keine keine
Presbyopie Kurzsichtigkeit nein normal keine
Presbyopie Myopie ja reduziert keine
Presbyopie Hypermetropie reduziert keine
presbyopisch ja keine
presbyopisch hypermetropisch ja normal keine
----- ------
Gruppe: weich
junges Myope kein normales weiches
junges Hypermetrop
präpresbyope hypermetrope nein normale weiche nein normal weich