6 lignes de code, vous emmènent apprendre les petites astuces les plus utiles de Python [Collection sans regret]

insérez la description de l'image ici

Ce billet de blog présente principalement les extraits de code liés à Python. Grâce au code concis et facile à comprendre, il est pratique pour certains amis qui ne sont pas particulièrement doués pour apprendre. Il ne fournit que quelques conseils et méthodes, et j'espère qu'il vous sera utile.

1. Définir Python 3 et pip 3 par défaut

L'un des problèmes les plus courants lors de l'utilisation de Python est de ne pas oublier d'utiliser Python 3.x au lieu de Python 2.x. Heureusement, il est très facile de définir Python 3 et pip 3 par défaut. Vous devez d'abord savoir où chacun est installé à l'aide de la commande which :

which python3   # /usr/local/bin/python3
which pip3      # /usr/local/bin/pip3

Notez chaque réponse afin de pouvoir ajouter le chemin en tant qu'alias au fichier de configuration de votre environnement shell. Vous pouvez ensuite ajouter une ligne echopour chacun .zshrcou .bashrcselon votre environnement avec :

# Linux or other bash environment
echo "alias python=/usr/local/bin/python3" >> ~/.bashrc
echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc

# Mac OS or other zsh environment
echo "alias python=/usr/local/bin/python3" >> ~/.zshrc
echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc

C'est fait! Python et pip correspondent à leurs versions Python 3.x.

2. Trois façons d'échanger deux variables en Python

ʕ•ᴥ•ʔ en utilisant des variables temporaires

Le moyen le plus simple d'échanger les valeurs de deux variables consiste à utiliser tempdes variables. La variable temp est utilisée pour stocker la valeur de la première variable (temp = a), vous permettant d'échanger les valeurs de deux variables (a = b), puis d'affecter la valeur tempà la deuxième variable.

a = 11
b = 7

temp = a
a = b
b = temp

print(a) # 7
print(b) # 11

ʕ•ᴥ•ʔ pas de variables temporaires (tuple swap)

Une autre façon d'échanger les valeurs de deux variables sans utiliser de variable temporaire consiste à utiliser l'emballage de tuple et le déballage de séquence. Les tuples peuvent être construits de plusieurs façons, dont l'une consiste à séparer les éléments du tuple par des virgules. De plus, Python évalue le côté droit d'une affectation avant le côté gauche. Ainsi, les variables sont compressées dans un tuple en les séparant par des virgules sur le côté droit de l'instruction, et décompressées en plaçant le même nombre de variables cibles séparées par des virgules sur la gauche.

Cette méthode d'échange et de permutation de variables peut être utilisée pour plus de deux variables, tant que le nombre de variables des deux côtés de l'énoncé est le même.

a = 11
b = 7

a, b = b, a

print(a) # 7
print(b) # 11

ʕ•ᴥ•ʔ utilise des opérateurs arithmétiques (uniquement pour les nombres)

Si deux variables sont des nombres, vous pouvez échanger leurs valeurs à l'aide d'opérateurs arithmétiques, tels que l'addition et la soustraction ( +, -)ou et la division ( *, /). Cette méthode d'échange est basée sur le calcul de la somme de deux nombres, puis sur leur échange en utilisant la différence de la somme et de la somme.

a = 11
b = 7

a = a + b # a = 18, b = 7
b = a - b # a = 18, b = 11
a = a - b # a = 7,  b = 11

print(a) # 7
print(b) # 11

3. 6 trucs et astuces Python pour la chaîne f

fLes chaînes de Python fournissent un format de chaîne plus lisible, concis et moins sujet aux erreurs que les formats de chaîne traditionnels . Ils regorgent de fonctionnalités utiles qui ne manqueront pas d'être utiles au quotidien. Jetons un coup d'œil à certains d'entre eux.

❀ Interpolation de chaîne

f-stringLa fonctionnalité de loin la plus couramment utilisée est l'interpolation de chaîne. Tout ce que vous avez à faire est de placer la valeur ou la variable ( {})entre et vous êtes prêt à partir.

str_val = 'apples'
num_val = 42

print(f'{
      
      num_val} {
      
      str_val}') # 42 apples

❀ nom de la variable

En plus d'obtenir la valeur d'une variable, vous pouvez également obtenir son nom à côté de la valeur. Ceci est particulièrement utile lors du débogage et est facilement réalisé en ajoutant= un signe égal après le nom de la variable à l'intérieur des accolades .( )

N'oubliez pas que les espaces à l'intérieur des accolades sont pris en compte, donc l'ajout d'espaces autour du signe égal peut rendre le résultat plus lisible.

str_val = 'apples'
num_val = 42

print(f'{
      
      str_val=}, {
      
      num_val = }') # str_val='apples', num_val = 42

❀Opérations mathématiques

Syntaxiquement contrairement aux noms de variables, vous pouvez également effectuer des opérations mathématiques dans les f-strings. Vous pouvez mettre des expressions mathématiques à l'intérieur d'accolades, et si vous ajoutez un signe égal, vous obtiendrez l'expression et son résultat.

num_val = 42

print(f'{
      
      num_val % 2 = }') # num_val % 2 = 0

❀ Représentation imprimable

En plus de l'interpolation de chaîne simple, vous pouvez également souhaiter obtenir une représentation imprimable d'une valeur. Cela se repr()fait déjà facilement en utilisant cette fonction. fLes chaînes !rfournissent une syntaxe plus courte en ajoutant des accolades à l'intérieur.

str_val = 'apples'

print(f'{
      
      str_val!r}') # 'apples'

❀Format numérique

De plus, les chaînes f peuvent être utilisées pour le formatage - d'où le f dans le nom. Pour ajouter une mise en forme à une valeur, vous ajoutez deux-points ( :)suivis d'un spécificateur de format. Ceci peut également être utilisé en equalscombinaison , si vous souhaitez également imprimer le nom de la variable.

Les chiffres sont un bon candidat. Par exemple, si vous souhaitez réduire une valeur numérique à deux décimales, vous pouvez utiliser .2fun spécificateur de format.

price_val = 6.12658

print(f'{
      
      price_val:.2f}') # 6.13

❀Format de date

Enfin, les dates peuvent également être formatées de la même manière que les nombres à l'aide de spécificateurs de format. Comme d'habitude, %Ysignifie toute l'année, %mest le mois, est %dle jour du mois.

from datetime import datetime;

date_val = datetime.utcnow()

print(f'{
      
      date_val=:%Y-%m-%d}') # date_val=2021-07-09

4. Deux façons de formater des chaînes en Python

ʕ ᵔᴥᵔ ʔ chaîne

Les littéraux de chaîne de format, souvent appelés fchaînes , sont 'f'des chaînes préfixées par ou 'F'. Ces chaînes peuvent contenir des champs de remplacement ( {})entre .

name = 'John'
age = 32

print(f'{
      
      name} is {
      
      age} years old') # 'John is 32 years old'

ʕ ᵔᴥᵔ ʔ str.format()

Cette str.format()méthode fonctionne de manière f-stringstrès , la principale différence étant que le champ de remplacement est fourni en tant qu'argument plutôt qu'en tant que partie d'une chaîne.

name = 'John'
age = 32

print('{0} is {1} years old'.format(name, age)) # 'John is 32 years old'

5. Comprendre l'affectation des tranches de Python

5.1 Comprendre la notation des tranches de Python

ʕ•̫͡• ʔ Grammaire de base

La notation de tranche de Python est utilisée pour renvoyer une liste ou une partie d'une liste. La syntaxe de base est la suivante :

[start_at:stop_before:step]

start_atest l'indice (inclusif) du premier élément à renvoyer, stop_beforeest l'indice (exclusif) de l'élément avant l'arrêt et stepest la distance entre deux éléments.

Les trois paramètres sont facultatifs, ce qui signifie que vous pouvez omettre n'importe lequel d'entre eux. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[1:4]     # [2, 3, 4]   (start at 0, stop before 4)
nums[2:]      # [3, 4, 5]   (start at 0, stop at end of list)
nums[:3]      # [1, 2, 3]   (start at 0, stop before 3)
nums[1:4:2]   # [2, 4]      (start at 1, stop before 4, every 2nd element)
nums[2::2]    # [3, 5]      (start at 2, stop at end of list, every 2nd element)
nums[:3:2]    # [1, 3]      (start at 0, stop before 3, every 2nd element)
nums[::2]     # [1, 3, 5]   (start at 0, stop at end of list, every 2nd element)
nums[::]      # [1, 2, 3, 4, 5] (start at 0, stop at end of list)

Comme vous pouvez probablement le constater à partir des exemples ci-dessus, les valeurs par défaut sont start_at = 0, stop_before = len(nums), step = 1.

La manière idiomatique de cloner superficiellement une liste consiste à utiliser [:](par exemple nums_clone = nums[:].

ʕ•̫͡• ʔ Valeurs négatives

Les trois paramètres acceptent également des valeurs négatives. Pour start_atet stop_before, une valeur négative signifie que l'on compte à partir de la fin de la liste, et non du début. Par exemple -1représenterait le dernier élément, -2l'avant-dernier élément, etc. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[1:-2]    # [2, 3]      (start at 1, stop before 2nd to last)
nums[-3:-1]   # [3, 4]      (start at 3rd to last, stop before last)

Un nombre négatif stepsignifie que la liste est découpée à l'envers (de la fin au début). Cela signifie également que start_atdevrait être supérieur à stop_beforeet stop_beforedans le contexte des foulées inversées, c'est plus comme stop_aftersi vous regardiez une liste non inversée. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[::-1]    # [5, 4, 3, 2, 1]   (reversed)
nums[4:1:-1]  # [5, 4, 3]   (reversed, start at 4, stop after 1)
nums[-1:1:-2] # [5, 3]      (reversed, start at last, stop after 1, every 2nd)

ʕ•̫͡• ʔ tranche vide

N'oubliez pas que la notation slice est très indulgente, donc si la valeur de l'argument est en dehors des limites de la liste, vous obtiendrez une liste vide. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[6:8]     # []
nums[:-10]    # []

5.2 Comprendre l'affectation des tranches de Python

ಡ ಡ Grammaire de base

Afin de comprendre l'allocation de tranches de Python, vous devez au moins avoir une bonne compréhension du fonctionnement des tranches. Voici un bref récapitulatif :

[start_at:stop_before:step]

L'affectation de tranches a la même syntaxe que les listes de tranches, à la seule exception qu'elle est utilisée sur le côté gauche de l'expression au lieu du côté droit. Étant donné que slice renvoie une liste, l'affectation de tranche attend une liste (ou un autre itérable). Et, comme son nom l'indique, le côté droit doit être la valeur attribuée à la tranche du côté gauche de l'expression. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[:1] = [6]        # [6, 2, 3, 4, 5]   (replace elements 0 through 1)
nums[1:3] = [7, 8]    # [6, 7, 8, 4, 5]   (replace elements 1 through 3)
nums[-2:] = [9, 0]    # [6, 7, 8, 9, 0]   (replace the last 2 elements)

ಡ ಡ modifier la longueur

La partie de la liste renvoyée par découpage sur le côté gauche de l'expression est la partie de la liste qui sera modifiée par l'affectation de tranche. Cela signifie que vous pouvez utiliser l'affectation de tranche pour remplacer une partie de la liste par une liste différente qui a également une longueur différente de la tranche renvoyée. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[1:4] = [6, 7]    # [1, 6, 7, 5]        (replace 3 elements with 2)
nums[-1:] = [8, 9, 0] # [1, 6, 7, 8, 9, 0]  (replace 1 element with 3)
nums[:1] = []         # [6, 7, 8, 9, 0]     (replace 1 element with 0)

Il est également possible d'insérer des éléments dans une liste sans rien y remplacer, si les tranches vides sont prises en compte. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[2:2] = [6, 7]    # [1, 2, 6, 7, 3, 4, 5]   (insert 2 elements)
nums[7:] = [8, 9]     # [1, 2, 6, 7, 3, 4, 5, 8, 9] (append 2 elements)
nums[:0] = [0]        # [0, 1, 2, 6, 7, 3, 4, 5, 8, 9] (prepend 1 element)
nums[:] = [ 4, 2]     # [4, 2]         (replace whole list with a new one)

ಡ ಡ Étapes à suivre

Dernière étape mais non la moindre, fonctionne également avec les affectations de tranches, vous pouvez l'utiliser pour remplacer les éléments qui correspondent à l'itération après chaque foulée. La seule différence est que si step n'est pas 1, la liste insérée doit avoir exactement la même longueur que la tranche de liste renvoyée. Par exemple:

nums = [1, 2, 3, 4, 5]

nums[2:5:2] = [6, 7]  # [1, 2, 6, 4, 7] (replace every 2nd element, 2 through 5)
nums[2:5:2] = [6, 7, 8] # Throws a ValueError (can't replace 2 elements with 3)
nums[1::-1] = [9, 0]  # [0, 9, 6, 4, 7] (reverse replace, 1 through start)

Guess you like

Origin blog.csdn.net/weixin_57577264/article/details/120650132