Heim > Artikel > Backend-Entwicklung > 30 unverzichtbare Funktionen und Fähigkeiten der Python-Sprache (2)
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)) >>> 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 listelse
[x] >>> flatten(a)[1, 2, 3, 4, 5, 6, 7 , 8] Hinweis: Laut Python-Dokumentation wird itertools.chain.from_iterable bevorzugt.
1.16Generator
Ausdruck
>>> g = (x ** 2 für x in x(g) >>> >>> 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:>>> KlassePoint(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()
4
>>> Q.popleft()
6
>>> 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
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):
KeyError: 'a'
>>>
>>> m =collections.defaultdict(int)
>>> m['a']
0
>>> m['b']
0
>>> 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']
0
>>> value_to_numeric_map['b']
1
>>> value_to_numeric_map['c']
2
>>> value_to_numeric_map['a']
0
>>> value_to_numeric_map['b']
1
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!