Heim > Backend-Entwicklung > Python-Tutorial > 30 Funktionen und Tricks der Python-Sprache, die Sie möglicherweise nicht kennen

30 Funktionen und Tricks der Python-Sprache, die Sie möglicherweise nicht kennen

高洛峰
Freigeben: 2016-10-19 11:38:00
Original
1104 Leute haben es durchsucht

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

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)

>>> 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 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage