Vote utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives
 

Algorithme

Python : trucs, astuces et bonnes pratiques


1. Print() et Python

1.1.  Print et variables

Il est possible de changer une partie du texte en y incorporant des variables précédées de l'opérateur "%".

Les paramètres placés entre parenthèses à droite de la chaine à afficher seront insérés dans le texte dans l'ordre.
  • %s représente un paramètre de type "string" (texte).
  • %d un "digit" (nombre entier).
  • %f un "floating" (flottant : nombre réel).
Exemples :
variable1, variable2 = 1, 2

>>> print("A. le résultat de ",variable1,' + ',variable2," est : ",variable1+variable2)
A. le résultat de 1 + 2 est : 3 >>> print("B. le résultat de " + str(variable1) + ' + ' + str(variable2) + " est : "+ str(variable1 + variable2)) B. le résultat de 1 + 2 est : 3
>>> print("C. et le résultat de %s + %d est %d" % (variable1, variable2, variable1+variable2))
C. et le résultat de 1 + 2 est 3

 

2. Les listes sous Python

2.1. Copier une liste

  •  Lorsque l'on copie deux listes de cette manière on obtient :
#Lorsque l'on copie une liste de cette manière

x = [1,2,3]
y = x

>>x
[1,2,3]
>>y
[1,2,3]


#Or si vous changez une valeur de la liste y , la liste x sera elle aussi affectée par cette modification:

y[0] = 4
>>x
[4,2,3]
>>y
[4,2,3]

 

  • Il faut donc procéder différemment.
     
#Alors comment copier une liste qui sera indépendante?

z= [1,2,3]
t = z[:]
t[0] = 9

>>z
[1, 2, 3]
>>t
[9, 2, 3]

 

  • Pour les listes plus complexes.
     
#Pour des données plus complexes, vous pouvez utiliser la fonction deepcopy du module copy

import copy
u = [[1,2], 3]
v = copy.deepcopy(u)
v[1] = [4,5,6]
>>u
[[1, 2], 3]
>>v
[[1, 2], [4, 5, 6]]

 

3. Les fonctions

3.1 Les fonctions anonyme sous Python : fonctions lambda

Comme son nom l'indique, une fonction anonyme est une fonction n'ayant pas de nom.

Concrètement, ces fonctions dites "lambda" n'ont pas plus d'avantages que les autres. Il n’existe aucune opération qu’on fasse avec une fonction anonyme qu’on ne puisse faire avec une fonction normale. On utilise les fonctions anonymes par goût, pour des raisons de style. Les lambdas sont très pratiques pour créer des fonctions jetables.

 

from math import *

def f(x):
    return x*2  

>>> f(3)
6

#Voici une fonction lambda qui fait la même chose que la fonction ordinaire précédente. 
#La syntaxe est condensée : il n’y a pas de parenthèses pas de return. 

>>> g = lambda x: x*2  
>>> g(3)
6

>>> h = lambda x: sqrt(x)  
>>> h(3)
1.7320508075688772

#Remarquez aussi que la fonction n’a pas de nom, mais qu’elle peut être appelée à travers la variable à laquelle elle est assignée.

>>> (lambda x: x*2)(3) 
6

Les limites des lambdas

  • On ne peut les écrire que sur une ligne.
  • On ne peut pas avoir plus d’une instruction dans la fonction.

 

10. Divers

10.1 Geopy

En géographie (et géodésie) le module geopy nous permet d’obtenir l’adresse complète du lieu, sa latitude, sa longitude et même son altitude. Il existe également une classe de distance utile qui calcule la distance entre deux lieux dans votre unité de mesure préférée.

 

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="specify_your_app_name_here")
#
location1 = geolocator.geocode("Notre dame de Paris")
location2 = geolocator.geocode("Lyon, France")
location3 = geolocator.geocode("new york")
#
coord1=(location1.latitude, location1.longitude)
coord2=(location2.latitude, location2.longitude)
coord3=(location3.latitude, location3.longitude)
#
>> print(location1.address)
Notre-Dame, 6, Parvis Notre-Dame - Place Jean-Paul II, iles, 4e, Paris, Île-de-France, France métropolitaine, 75004, France
>> print(coord1)
(48.85293705, 2.3500501225)
#
>> print(location2.address)
Lyon, Métropole de Lyon, Circonscription départementale du Rhône, Auvergne-Rhône-Alpes, France métropolitaine, France
>> print(coord2) 45.7578137, 4.8320114) >> print(location3.address) NYC, New York, USA
print(coord3) (40.7308619, -73.9871558)
from geopy import distance # >> print(distance.distance(coord1, coord2).km) 391.9113209974709 >> print(distance.distance(coord1, coord3).km) 5850.47017420855

 

 

Articles Connexes