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

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

高洛峰
高洛峰Original
2017-03-17 16:45:551005Durchsuche

Seit ich angefangen habe zu lernenPython habe ich beschlossen, einen häufig verwendeten „Trick“ beizubehalten. Immer wenn ich einen Absatz sehe, der mich denken lässt: „Cool, das könnte funktionieren!“ ”-Code (in einem Beispiel in StackOverflow, in Open-Source-Software usw.), ich probiere es aus, bis ich es verstehe, und füge es dann zur Liste hinzu. Dieser Beitrag ist Teil der Liste Wenn Sie ein erfahrener Python-Programmierer sind, können Sie einiges noch nicht kennen, wenn Sie ein C-, C++- oder Java-Programmierer sind oder gerade erst anfangen, Python zu lernen 🎜>Programmierung, dann werden Sie viele davon sehr nützlich finden, wie ich es getan habe.

Jeder Trick oder jede Sprachfunktion kann nur anhand von Beispielen überprüft werden, ohne dass es zu viele Erklärungen gibt Die Beispiele sind klar, einige von ihnen werden je nach Vertrautheit immer noch etwas kompliziert aussehen. Wenn es Ihnen also nach dem Betrachten der Beispiele nicht klar ist, bieten die Titel genügend Informationen, um über Google detaillierte Inhalte zu erhalten >Die Liste ist nach Schwierigkeitsgrad sortiert, mit häufig verwendeten Sprachfunktionen und -techniken an der Spitze

1.15 Flache Liste:

>>> [3, 4], [5, 6]]

>>>

list

(itertools.chain.from_iterable(a))

[1, 2, 3, 4, 5, 6]

>>> sum(a, [])

[ 1, 2, 3, 4, 5, 6]

>>> 3, 4, 5, 6]

>>> a = [[[1, 2], [3, 4]] , [[5, 6], [7, 8]]]

>>> [x für l1 in a für l2 in l1 für x in l2]

[1 , 2, 3, 4, 5 , 6, 7, 8]

>>> a = [1, 2, [3, 4], [[5, 6], [7, 8] ]]

>>> flatten = lambda x: [y für l in x für y in flatten(l)]

if

type( x) is list

else

[x]

>>> flatten(a)

[1, 2, 3, 4, 5, 6, 7 , 8] Hinweis: Laut Python-Dokumentation wird itertools.chain.from_iterable bevorzugt.

1.16

Generator

Ausdruck

>>> g = (x ** 2 für x in x

Bereich (10)) >>> nächster

(g)

0

>>>

1

>>> next(g)

4

>>> next(g)

9

>>> sum(x ** 3 für x in xrange(10))

2025

>>> x ** 3 für x in xrange(10) wenn x % 3 == 1)

408

1.17 Wörterbuch iterieren

>>> x: x ** 2 für x im Bereich(5)}

>>> m

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

>>> m = {x: 'A' + str(x) für x im Bereich(10)}

> ;>> m

{0: 'A0', 1: 'A1', 2: 'A2', 3: 'A3', 4: 'A4', 5: 'A5', 6 : 'A6', 7: 'A7', 8: 'A8', 9: 'A9'}

1.18 Kehren Sie das Wörterbuch um, indem Sie das Wörterbuch iterieren

>>> = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

>>> 4, 'a': 1, 'b': 2, 'c': 3}

>>> {v: k für k, v in m.items()}

{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

1.19 Benannte Sequenz (collections.namedtuple)

> ; >> Point =collections.namedtuple('Point', ['x', 'y'])

>>> p = Point(x=1.0, y=2.0)

>>> p

Punkt(x=1,0, y=2,0)

>>> p.x

1,0

>>> p.y

2.0

1.20

Vererbung

der benannten Liste:

>>> Klasse

Point(collections.namedtuple('PointBase', ['x', 'y'])):

... slots = ()

...     def add(self, other):  

...             return Point(x=self.x + other.x, y=self.y + other. y)  

...  

>>> p = Punkt(x=1,0, y=2,0)  

>>> q = Punkt(x=2,0, y=3,0)  

>>> p + q  

Punkt(x=3,0, y=5,0) 

1,21   集合及集合操作

>>> A = {1, 2, 3, 3}  

>>> A  

set([1, 2, 3])  

>>> B = {3, 4, 5, 6, 7}  

>>> B  

set([3, 4, 5, 6, 7])  

>>> A | B  

set([1, 2, 3, 4, 5, 6, 7])  

>>> A & B  

set([3])  

>>> A - B  

set([1, 2])  

>>> B - A  

set([4, 5, 6, 7])  

>>> A ^ B  

set([1, 2, 4, 5, 6, 7])  

>>> (A ^ B) == ((A - B) | (B - A))  

Wahr 

1.22   多重集及其操作 (Sammlungen.Zählerer )

>>> A = Sammlungen.Counter([1, 2, 2])  

>>> B = Sammlungen.Counter([2, 2, 3])  

>>> A  

Counter({2: 2, 1: 1})  

>>> B  

Counter({2: 2, 3: 1})  

>>> A | B  

Counter({2: 2, 1: 1, 3: 1})  

>>> A & B  

Zähler({2: 2})  

>>> A + B  

Zähler({2: 4, 1: 1, 3: 1})  

>>> A - B  

Zähler({1: 1})  

>>> B - A  

Counter({3: 1}) 

1.23   迭代中最常见的元素 (collections.Counter)

>>> A = Sammlungen.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7])  

>>> A  

Zähler({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})  

>>> ; A.most_common(1)  

[(3, 4)]  

>>> A.most_common(3)  

[(3, 4), (1, 2), (2, 2)] 

1.24   双端队列 (collections. deque)

>>> Q =collections.deque()  

>>> Q.appEnde(1)  

>>> Q.appendleft(2)  

>>> Q.extend([3, 4])  

>>> Q.extendleft([5, 6])  

>>> Q  

deque([6, 5, 2, 1, 3, 4])  

>>> Q.pop()  

>>> Q.popleft()  

>>> Q  

deque([5, 2, 1, 3])  

>>> Q.rotate(3)  

>>> Q  

deque([2, 1, 3, 5])  

>>> Q.rotate(-3)  

>>> Q  

deque([5, 2, 1, 3]) 

1.25   有最大长度的双端队列 (collections.deque)

>>> last_drei =collections.deque(maxlen=3)  

>>> for i in xrange(10):  

...     last_ three.append(i)  

...     print ', '.join(str(x) for x in letzten_drei)  

...  

0, 1 

0, 1, 2 

1, 2, 3 

2, 3, 4 

3, 4, 5 

4, 5, 6 

5, 6, 7 

6, 7, 8 

7, 8, 9 

1.26   字典排序 (collections.OrderedDict)

>>> m = dict((str(x), x) für x im Bereich(10))  

>>> print ', '.join(m.keys())  

1, 0, 3, 2, 5, 4, 7, 6, 9, 8 

>>> m = Sammlungen.OrderedDict((str(x), x) für x in Bereich(10))  

>>> print ', '.join(m.keys())  

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 

>>> m = Sammlungen.OrderedDict((str(x), x) für x im Bereich(10, 0, -1))  

>>> print ', '.join(m.keys())  

10, 9, 8, 7, 6, 5, 4, 3, 2, 1 

1.27   缺省字典 (collections .defaultdict)

>>> m = dict()  

>>> m['a']  

Traceback (letztes calle zuletzt):  

  Datei“, Zeile 1, in <Modul>  

KeyError: 'a' 

>>>  

>>> m =collections.defaultdict(int)  

>>> m['a']  

>>> m['b']  

>>> m =collections.defaultdict(str)  

>>> m['a']  

'' 

>>> m['b'] += 'a' 

>>> m['b']  

'a' 

>>> m =collections.defaultdict(lambda: '[Standardwert]')  

>>> m['a']  

'[Standardwert]' 

>>> m['b']  

'[Standardwert]' 

1.28   用缺省字典表示简单的树

>>> import json  

>>> tree = lambda:collections.defaultdict(tree)  

>>> root = tree()  

>>> root['menu']['id'] = 'file' 

>>> root['menu']['value'] = 'Datei' 

>>> root['menu']['menuitems']['new']['value'] = 'New' 

>>> root['menu']['menuitems']['new']['onclick'] = 'new();' 

>>> root['menu']['menuitems']['open']['value'] = 'Öffnen' 

>>> root['menu']['menuitems']['open']['onclick'] = 'open();' 

>>> root['menu']['menuitems']['close']['value'] = 'Schließen' 

>>> root['menu']['menuitems']['close']['onclick'] = 'close();' 

>>> print json.dumps(root, sort_keys=True, indent=4, Separatoren=(',', ': '))  

{  

    "menu" : {

"id": "Datei",

"Menuitems": {

"Close": {

"Onclick": "Close ();",  

                "Wert": "Schließen" 

               

           "onclick": "new( );",  

                "Wert": "Neu" 

            },  

            "offen": {  

                " onclick": "open() ;",  

                "value": "Open" 

            }  

        },  

        "value": "File" 

}  

(到https://gist.github.com/hrldcpr/2012250查看详情)

1.29   映射

对象

到唯一的序列数 (collections.defaultdict)>>> itertools, Sammlungen importieren  

>>> value_to_numeric_

map

=collections.defaultdict(itertools.count().next)  >>> value_to_numeric_map['a']  

>>> value_to_numeric_map['b']  

>>> value_to_numeric_map['c']  

>>> value_to_numeric_map['a']  

>>> value_to_numeric_map['b']  


Das obige ist der detaillierte Inhalt von30 unverzichtbare Funktionen und Fähigkeiten der Python-Sprache (2). 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