Als ich anfing, Python zu lernen, fing ich an, eine eigene Python-Tippsammlung zusammenzufassen. Als ich später einen coolen Code auf Stack Overflow
oder in einer Open-Source-Software sah, war ich überrascht: Es stellte sich heraus, dass dies immer noch möglich ist! Zu diesem Zeitpunkt würde ich mein Bestes geben, um diesen Code selbst auszuprobieren. Nachdem ich seine Gesamtidee verstanden hatte, würde ich diesen Code zu meiner Sammlung hinzufügen. Dieser Blog ist eigentlich das öffentliche Debüt des letzten Teils dieser Sammlung. Wenn Sie bereits ein Python-Experte sind, sollten Sie grundsätzlich die meisten Verwendungen hier kennen, aber ich denke, Sie sollten auch in der Lage sein, einige neue Tricks zu entdecken, die Sie nicht kennen. Und wenn Sie zuvor ein C, C, Java-Programmierer waren und gleichzeitig Python lernen, oder einfach ein Anfänger sind, der gerade das Programmieren gelernt hat, dann sollten Sie viele praktische Fähigkeiten sehen, die für Sie besonders nützlich und überraschend sind, so wie ich es war das gleiche wie vorher.
Jede Technik und jeder Sprachgebrauch wird jedem an einem Beispiel gezeigt, eine weitere Erklärung ist nicht erforderlich. Ich habe mein Bestes gegeben, um jedes Beispiel leicht verständlich zu machen, aber da die Leser unterschiedlich gut mit Python vertraut sind, kann es immer noch einige unklare Teile geben. Wenn Ihnen also die Beispiele selbst keinen Sinn ergeben, hilft Ihnen zumindest der Titel des Beispiels, wenn Sie später googeln.
Die gesamte Sammlung ist grob nach Schwierigkeitsgrad sortiert, wobei einfache und häufige am Anfang und seltenere am Ende stehen.
1.1 Auspacken
>>> a, b, c = 1, 2, 3
>>> >
(1, 2, 3)>>> a, b, c = [1, 2, 3]>>> b, c(1, 2, 3)>>> a, b, c = (2 * i 1 für i im Bereich(3))>>> a, b, c(1, 3, 5)>>> 1, (2, 3), 4]>>> a1>>> >>> c>>> d41.2 Unboxing Variablenaustausch >>> a, b = 1, 2>>> a, b = b, a>> a, b(2, 1)1.3 Erweitertes Unboxing (nur kompatibel mit Python3)>>> , 2, 3, 4, 5]>>> a1>>> , 3, 4]>>> c51,4 Negativer Index>>> , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> a[-1]10
>>> a[-3]81,5 Schnittliste>>> , 4, 5, 6, 7, 8, 9, 10]>>> a[2:8][2, 3, 4, 5, 6, 7]1.6 Negativindex-Schnittliste>>> >>> a[-4:-2][7, 8]1.7 Schrittgrößen-Schnittliste angeben> ;>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> a[::2] [0, 2, 4, 6, 8, 10]>>> a[::3][0, 3, 6, 9] >>> a[2:8:2][2, 4, 6]1,8 Negativschrittgrößen-Schnittliste
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> ][10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>> a[::-2 ][10, 8, 6, 4, 2, 0]1.9 Listenschnittzuweisung>>> , 5]>>> a[2:3] = [0, 0]>>> , 0, 0, 4, 5]>>> a[1:1] = [8, 9]>>> 🎜>[1, 8, 9, 2, 0, 0, 4, 5]>>> a[1:-1] = []> ;> ;> a[1, 5]1.10 Methode zum Schneiden benannter Listen>>> , 5]>>> LASTTHREE = Slice(-3, None)>>> LASTTHREEslice(-3, None, Keine)>>> a[LASTTHREE][3, 4, 5]1.11 Komprimierung und Dekomprimierung von Listen und Iteratoren>>> a = [1, 2, 3]>>> b = ['a', 'b', 'c']> ;>> z = zip(a, b)>>> z[(1, 'a'), (2, 'b' ), ( 3, 'c')]>>> zip(*z)[(1, 2, 3), ('a', 'b' , 'c ')]1.12 Komprimierer benachbarter Elemente>>> a = [1, 2, 3, 4, 5, 6]>> ;> zip(*([iter(a)] * 2))[(1, 2), (3, 4), (5, 6)]
> >> group_adjacent = lambda a, k: zip(*([iter(a)] * k))>>> (1, 2, 3), (4, 5, 6)]>>> group_adjacent(a, 2)[(1, 2 ), (3, 4), (5, 6)]>>> group_adjacent(a, 1)[(1,), (2,), ( 3,), ( 4,), (5,), (6,)]
>>> zip(a[::2], a[1::2])
[(1, 2), (3, 4), (5, 6)]
> >> zip(a[::3], a[1::3], a[2::3])
[(1, 2, 3), (4, 5, 6)]
>>> group_adjacent = lambda a, k: zip(*(a[i::k] for i in range(k)))
>>> group_adjacent(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>> group_adjacent(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>> group_adjacent(a, 1)
[(1,), (2,), (3,), (4,), (5,), (6,)]
1.13在列表中用压缩器和迭代器滑动取值窗口
>>> def n_grams(a, n):
... z = [iter(a[i:]) for i in range(n)]
... return zip(*z )
...
>>> a = [1, 2, 3, 4, 5, 6]
>>> n_grams(a, 3)
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]
>>> n_grams(a, 2)
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
> ;>> n_grams(a, 4)
[(1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6)]
1.14用压缩器反转字典
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m.items()
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
>>> zip(m.values(), m.keys())
[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd ')]
>>> mi = dict(zip(m.values(), m.keys()))
>>> mi
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
1.15 列表展开
>> ;> a = [[1, 2], [3, 4], [5, 6]]
>>> list(itertools.chain.from_iterable(a))
[1, 2, 3, 4, 5, 6]
>>> sum(a, [])
[1, 2, 3, 4, 5, 6]
>>> [x für l in a für x in l]
[1, 2, 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]
1.16 生成器表达式
>>> g = (x ** 2 für x in xrange(10))
>>> next(g)
0
>>> next(g)
1
>>> next(g)
4
>>> next(g)
9
>>> sum(x ** 3 für x in xrange(10))
2025
>>> sum(x ** 3 für x in xrange(10) if x % 3 == 1)
408
1.17 字典推导
>>> m = {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 用字典推导反转字典>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}>>> m{'d': 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 命名元组>>> Point =collections.namedtuple('Point', ['x', 'y'])>>> p = Punkt(x=1,0, y=2,0)>>> pPunkt(x=1,0, y=2,0)>>> p.x1,0>>> p.y2,01,20 继承命名元组>>> class 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 qPunkt(x=3,0, y=5,0)1,21 操作集合>>> A = {1, 2, 3, 3}>>> Aset([1, 2, 3])>>> B = {3, 4, 5, 6, 7}>>> Bset([3, 4, 5, 6, 7])>>> A | B咨询官网客服:http://www.lampbrother.netPHPCMS二次开发 http://yun.itxdl.cn/online/phpcms/index.php?u=5微信开发http://yun.itxdl.cn/online/weixin/index.php?u=5移动互联网服务器端开发 http://yun.itxdl.cn/online/server/index.php? u=5Javascript-Kurs http://yun.itxdl.cn/online/js/index.php?u=5
CTO-Trainingslager http://yun.itxdl.cn/online/cto/index .php?u=5
Das Obige stellt 21 Tipps zu Python vor, einschließlich aller Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.