Maison >développement back-end >Tutoriel Python >30 fonctionnalités et compétences incontournables du langage Python (1)

30 fonctionnalités et compétences incontournables du langage Python (1)

高洛峰
高洛峰original
2017-03-17 16:48:221226parcourir

Depuis que j'ai commencé à apprendre Python, j'ai décidé de maintenir une liste de "trucs" que j'utilise fréquemment. Chaque fois que je vois un morceau de code qui me fait penser "Cool, ça marche !" (dans un exemple, sur StackOverflow, dans un logiciel open source, etc.), je l'essaye jusqu'à ce que je le comprenne, puis je l'ajoute à la liste. . Ce message fait partie d'une liste nettoyée. Si vous êtes un programmeur Python expérimenté, même si vous en connaissez peut-être déjà certains, vous en découvrirez peut-être encore certains que vous ne connaissez pas. Si vous êtes un programmeur C, C ou Java qui apprend Python, ou si vous commencez tout juste à apprendre la programmation, vous trouverez beaucoup d'entre eux très utiles, comme moi.

Chaque astuce ou fonctionnalité de langage ne peut être vérifiée qu'à travers des exemples sans explication excessive. Même si j'ai essayé de rendre les exemples clairs, certains d'entre eux sembleront encore un peu compliqués, selon votre familiarité. Ainsi, si vous n'êtes pas sûr après avoir regardé l'exemple, le titre peut fournir suffisamment d'informations pour que vous puissiez obtenir le contenu détaillé via Google.

La liste est triée par difficulté, avec les fonctionnalités et techniques linguistiques couramment utilisées au début.

1.1 Divisé

>>> 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 pour i dans la plage (3))

>>> a, b, c

(1, 3, 5)

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

>>>a

1

>>>

>>> c

3

>>> d

4

1.2 Variables d'échange Split

>>> a, b = 1, 2

>>> a, b = b, a

>> a, b

(2, 1)

1.3 Expansion et fractionnement (applicable sous Python 3)

>>> 1, 2, 3, 4, 5]

>>>a

1

>>> 2, 3, 4]

>>>c

5

1.4 Indice négatif

>>> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>>a[-1]

10

>>> a[-3]

8

1.5 Découpage de liste (a[start:

end

])

> ;>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

1.6 Découpage de liste à l'aide d'index négatifs

>>> 3, 4, 5, 6, 7, 8, 9, 10]

>>>a[-4:-2]

[7, 8]

1.7 Tranche de liste avec valeur de pas (a[start:end:step])

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

>>>a[::2]

[0, 2, 4, 6, 8, 10]

> ;>> une[::3]

[0, 3, 6, 9]

>>> 🎜>[2, 4, 6]

1.8 Tranchage de liste de valeurs de pas négatif

>>> 7, 8, 9, 10]

>>>a[::-1]

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>>a[::-2]

[10, 8, 6, 4, 2, 0]

1.9 Affectation des tranches de liste

>>> a = [1, 2, 3, 4, 5]

>>> , 0]

>>> une

[1, 2, 0, 0, 4, 5]

>> ;> :1] = [8, 9]

>>>a

[1, 8, 9, 2, 0, 0, 4, 5 ]

>>> a[1:-1] = []

>>> a

[1, 5]

1.10 Tranche nommée (tranche (début, fin, étape))

>>> a = [0, 1, 2, 3, 4, 5]

> ;>> = slice(-3, Aucun)

>>> DERNIER TROIS

slice(-3, Aucun, Aucun)

> DERNIER TROIS]

[3, 4, 5]

1.11

zip

Liste d'emballage et de déballage et multiples

>> ;> 1, 2, 3]

>>> b = ['a', 'b', 'c']

>>> ; , b) >>>z

[(1, 'a'), (2, 'b'), (3, 'c')]

>>> zip(*z)

[(1, 2, 3), ('a', 'b', 'c')]

1.12   使用zip合并相邻的列表项

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

>>> 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,)]  

 

>>> 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使用zip et itérateurs生成滑动窗口 (n -grammes) 

>>> depuis itertools importer islice  

>>> def n_grams(a, n):  

...     z = (islice(a, i, None) 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使用zip反转字典

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


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn