Heim  >  Artikel  >  Backend-Entwicklung  >  30 unverzichtbare Funktionen und Fähigkeiten der Python-Sprache (3)

30 unverzichtbare Funktionen und Fähigkeiten der Python-Sprache (3)

高洛峰
高洛峰Original
2017-03-17 16:44:011230Durchsuche

Seitdem ich angefangen habe, Python zu lernen, habe ich beschlossen, eine Liste mit „Tricks“ zu führen, die ich häufig verwende. 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 nicht kennen, auch wenn Sie einige davon 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], repeat=4):

... print ''.join(str(x) for x in p)

...

0000

0001

0010

0011

0100

0101

0110 🎜 >

1010

1011

1100

1101

1110

1111

1.32 Kombination von Kombinationen und Ersetzungen (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 Sortierung (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

3412

3421

4123

4132

4213

4231

4312

4321

1.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)

>>> Teilmenge in itertools.chain.from_iterable(itertools.combinations(a, n) für n in range(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

>>>

>>> mit open('contactlenses.csv', 'r') als Infile:  

...     data = [line.strip().split(',') for line in infile]  

...  

>>> data = data[1:]  

>>> def print_data(rows):  

...     print 'n'.join('t'.join('{: <16}'.format(s) for s in row) für Zeile in Zeilen )  

...  

 

>>> print_data (data)

junges myope nein reduziert keine

junges Myope Nein normal weich

junges Myope Ja reduziert keine

junges Myope Ja normal Hard

jung               hypermetropisch            nein                    reduziert               keine  

jung               hypermetropisch           nein                      normal                  weich  

jung               hypermetrop            ja                     reduziert              keine  

jung               hypermetrop            ja                     normal                    hart  

vor- Presbyopie      Myopie                 nein                                     keine  

Presbyopie                                     normal                  weich                              keine  

präpresbyope      Myopie                   ja                     normal                  stark  

präpresbyopisch      hypermetropisch            nein                      reduziert                 keine                 normal                  weich  

präpresbyope      hypermetrop                     reduziert               keine.  

präpresbyopisch      hypermetropisch            ja                     normal                  keine  

Presbyopic Myope nein reduziert keine

Presbyopic Myope Nein normal keine

Presbyopisches Myop reduziert                 keine  

presbyopisch          hypermetrop                    normal                  weich.  

presby opisch          hypermetropisch            ja                     reduziert                 keine  

presbyopisch          hypermetropisch                        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                hart  

jung              Hypermetropie            ja                     normal                schwer  

präpresbyope                   ja                    normal                  hart  

Presbyopie Myope ja normal hart

----------- reduziert                 keine                        hypermetrop            ja                     reduziert                 keine  

Präpresbyopie                   nein                    reduziert                 keine  

Präpresbyopie                  ja                     reduziert                 keine                keine  

präpresbyopisch      hypermetrop            ja                     reduziert                 keine  

Prä-Presbyopic Hypermetrope Ja Normale Keine

Presbyopic Myope Nein reduziert keine

Presbyopic Myop >presbyopisch          hypermetropisch            nein                               keine  

presbyopisch          hypermetropisch                              reduziert                 keine  

Presbyopie          Hypermetropie                  keine  

-----------  

Gruppe: weich  

jung               kurzsichtig                   nein                    normal                weich  

jung              hypermetrop            nein                                           normal                  weich  

präpresbyopisch      hypermetropisch            nein normal                  weich  

presbyopisch          hypermetrop            nein                    normal                  weich 

Das obige ist der detaillierte Inhalt von30 unverzichtbare Funktionen und Fähigkeiten der Python-Sprache (3). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn