Maison >développement back-end >Tutoriel Python >30 fonctionnalités et compétences incontournables du langage Python (3)
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.30 Éléments maximum et minimum (heapq.nlargest et heapq.nsmallest)
>>> heapq.nsmallest(5, a)
[3, 3 , 5, 6, 8]
>>> heapq.nlargest(5, a)
[100, 100, 99, 98, 98]
1.31 Produit cartésien (itertools.product)
>>> pour p dans itertools.product([1, 2, 3], [4, 5]) :
( 1, 4)
(1, 5)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
>>> pour p dans itertools.product([0, 1], répétition=4) :
... imprimer ''.join(str(x) for x in p)
...
0000
0001
0010
0011
0100
0101
0110 🎜 >
1010 1011 11001101 1110 1111 1.32 combinaison de combinaisons et de remplacement (itertools.combinations et itertools.combinations_with_replacement)>>> ; pour c dans 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 >>> pour c dans itertools.combinations_with_replacement([1, 2, 3], 2): ... print ''.join(str(x) for x in c) ... 11 12 13 22 23 33 1.33 tri(itertools.permutations) >>> pour p dans 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 Itération de lien (itertools.chain)
>>> a = [1, 2, 3, 4]
>>> pour p dans itertools.chain(itertools.combinations(a, 2), itertools.combinations(a, 3)) :
... imprimer 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)
>>> sous-ensemble dans itertools.chain.from_iterable(itertools.combinations(a, n) for n in range(len(a) 1 ))
... imprimer le sous-ensemble
...
()
(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 Regrouper les lignes par valeur donnée (itertools.groupby)
>>> de l'opérateur import itemgetter
>>>
>>> avec open('contactlenses.csv', 'r') comme fichier entrant :
... data = [line.strip().split(',') pour la ligne dans le fichier entrant]
...
>>> data = data[1:]
>>> def print_data(rows):
... print 'n'.join('t'.join('{: <16}'.format(s) for s in row) pour la ligne dans les lignes )
...
>>> print_data(data)
jeune myope non réduit aucun
jeune myope non normal doux
jeune myope oui
jeune hypermétrope non réduit aucun
jeune hypermétrope non normal doux
jeune hypermétrope oui réduit aucun
jeune hypermétrope oui normal dur
pré- presbyte myope non réduit aucun
pré-presbyte myope non normal doux
pré-presbyte myope oui réduit aucun
pré-presbyte myope oui normal dur
pré-presbyte hypermétrope non réduit aucun
pré-presbyte hypermétrope non
pré-presbyte hypermétrope oui normal aucunpresbyte myope non réduit aucun
presbyte myope non normal aucun
presbyte myope oui aucun
presbyte myope oui normal dur
presbyte hypermétrope non réduit aucun
presbyte hypermétrope non normal doux
presbyte hypermétrope oui réduit aucun
presbyte hypermétrope oui normal aucun
>> ;> data.sort(key=itemgetter(-1))
>>> pour la valeur, regroupez dans itertools.groupby(data, lambda r: r[-1]):
... print '-----------'
... print 'Groupe : ' valeur
... print_data(group)
...
-----------
Groupe : dur
jeune myope oui normal dur
jeune hypermétrope oui normal dur
pré-presbyte myope oui normal dur
presbyte myope oui normal dur
----------
Groupe : aucun
jeune myope Non aucun
jeune hypermétrope non réduit aucun
jeune hypermétrope oui réduit aucun
pré-presbyte myope non réduit aucun
pré-presbyte myope oui réduit aucun
pré-presbyte hypermétrope non réduit aucun
pré-presbyte hypermétrope oui réduit aucun
pré-presbyte hypermétrope oui normal aucun
presbyte myope non réduit aucun
presbyte myope non normal aucun
presbyte myope oui réduit aucun
presbyte hypermétrope non réduit aucun
presbyte hypermétrope oui
-----------
Groupe : doux
jeune myope non normal doux
jeune hypermétrope non normal doux
pré-presbyte myope non normal doux
pré-presbyte hypermétrope non normal doux
presbyte hypermétrope non normal doux
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!