Cinq astuces cachées en Python dont vous n'avez probablement jamais entendu parler

PHPz
Libérer: 2023-04-13 14:31:03
avant
1585 Les gens l'ont consulté

Cinq astuces cachées en Python dont vous n'avez probablement jamais entendu parler

La vie est courte, apprenez Python rapidement

1 ... objet

Oui, vous avez bien lu, c'est "..."

En Python... représente un objet nommé objet Ellipsis. Selon la description officielle, il s'agit d'une valeur spéciale qui peut généralement être utilisée comme espace réservé pour une fonction vide ou utilisée pour les opérations de découpage dans Numpy.

Par exemple :

def my_awesome_function():
...
Copier après la connexion

équivaut à :

def my_awesome_function():
Ellipsis
Copier après la connexion

Bien sûr, vous pouvez également utiliser une passe ou une chaîne comme espace réservé :

def my_awesome_function():
pass
Copier après la connexion
def my_awesome_function():
"An empty, but also awesome function"
Copier après la connexion

Leur effet final est le même.

Parlons de... comment fonctionnent les objets dans Numpy. Créez un tableau matriciel 3x3x3, puis récupérez la deuxième colonne de toutes les matrices les plus internes :

>>> import numpy as np
>>> array = np.arange(27).reshape(3, 3, 3)
>>> array
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
 [[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
 [[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
Copier après la connexion

Afin d'obtenir la deuxième colonne de la matrice la plus interne Column, la méthode traditionnelle. peut ressembler à ceci :

>>> array[:, :, 1]
array([[ 1, 4, 7],
 [10, 13, 16],
 [19, 22, 25]])
Copier après la connexion

Si vous utilisez... un objet, cela ressemblera à ceci :

>>> array[..., 1]
array([[ 1, 4, 7],
 [10, 13, 16],
 [19, 22, 25]])
Copier après la connexion

Cependant, veuillez noter que... les objets ne sont disponibles que dans Numpy, pas dans les tableaux intégrés Python.

2. Décompresser l'objet itératif

Décompresser l'objet itératif est une fonctionnalité très pratique :

>>> a, *b, c = range(1, 11)
>>> a
1
>>> c
10
>>> b
[2, 3, 4, 5, 6, 7, 8, 9]
Copier après la connexion

ou :

>>> a, b, c = range(3)
>>> a
0
>>> b
1
>>> c
2
Copier après la connexion

De même, au lieu d'écrire du code comme celui-ci :

>>> lst = [1]
>>> a = lst[0]
>>> a
1
>>> (a, ) = lst
>>> a
1
Copier après la connexion

Autant le mettre à jour de la même manière comme décompression de l'objet itératif. Opération d'affectation élégante :

>>> lst = [1]
>>> [a] = lst
>>> a
1
Copier après la connexion

Bien que cela semble un peu stupide, à mon avis, c'est plus élégant que la façon d'écrire précédente.

3. L'art de l'expansion

Il existe diverses façons étranges d'étendre les tableaux, telles que :

>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> flattened = [elem for sublist in l for elem in sublist]
>>> flattened
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Copier après la connexion

Si vous avez une certaine compréhension de la réduction et de lambda, il est recommandé d'utiliser une manière plus élégante :

>>> from functools import reduce
>>> reduce(lambda x,y: x+y, l)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Copier après la connexion

combine réduire et lambda, Vous pouvez effectuer des opérations d'épissage sur chaque sous-tableau du tableau l.

Bien sûr, il existe une manière plus magique :

>>> sum(l, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> # 其实相当于 [] + [1, 2, 3] + [4, 5, 6] + [7, 8, 9]
Copier après la connexion

Oui, en effectuant l'opération de somme sur le tableau bidimensionnel, chaque élément du tableau bidimensionnel peut être assemblé par "addition".

De la même manière, si vous effectuez une opération de somme sur un tableau à trois dimensions, il peut être transformé en un tableau à deux dimensions. À ce stade, si vous effectuez une opération de somme sur un tableau à deux dimensions, il peut. être développé en un tableau unidimensionnel.

Bien que cette technique soit excellente, je ne la recommande pas car la lisibilité est très mauvaise.

4. Underscore _ variable

Chaque fois que vous exécutez une expression dans l'interpréteur Python, IPython ou la console Django, Python liera la valeur de sortie dans la variable _ :

>>> nums = [1, 3, 7]
>>> sum(nums)
11
>>> _
11
>>>
Copier après la connexion

Puisqu'il s'agit d'une variable, vous pouvez la remplacer à à tout moment, ou utilisez-le comme une variable normale :

>>> 9 + _
20
>>> a = _
>>> a
20
Copier après la connexion

5. Utilisations multiples de else

Beaucoup de gens ne savent pas que else peut être utilisé dans de nombreux endroits. En plus du if else typique, nous pouvons également l'utiliser. dans les boucles Il est utilisé dans la gestion des exceptions.

Boucle

Si vous devez déterminer si une certaine logique est traitée dans la boucle, vous faites généralement ceci :

found = False
a = 0
while a < 10:
if a == 12:
found = True
a += 1
if not found:
print("a was never found")
Copier après la connexion

Si else est introduit, nous pouvons utiliser une variable de moins :

a = 0
while a < 10:
if a == 12:
break
a += 1
else:
print("a was never found")
Copier après la connexion

Gestion des exceptions

Nous pouvons utiliser essayez. .. Utilisez else dans except ... pour écrire une logique lorsque les exceptions ne sont pas interceptées :

In [13]: try:
...: {}['lala']
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Key is missing
Copier après la connexion

De cette façon, si le programme n'a pas d'exceptions, il prendra la branche else :

In [14]: try:
...: {'lala': 'bla'}['lala']
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Else here
Copier après la connexion

Si vous gérez souvent les exceptions. , vous connaîtrez cette astuce assez pratique.

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!