Écrire une fonction trouver_minimum
qui retourne le minimum d'une liste donnée.
# Fonction pour trouver le maximum dans une liste
def trouver_minimum(liste):
min_val = liste[0]
for val in liste:
if val < min_val:
min_val = val
return min_val
# test
trouver_minimum([42, 17, 8, 23, 56, 34, 12, 89, 5, 31])
Utiliser la fonction trouver_minimum
pour implémenter la fonction tri_simple
qui trie en remplissant une nouvelle liste vide à l'aide des instruction append
et remove
.
# Fonction de tri autre que par insertion et sélection (tri simple avec liste vide et append)
def tri_simple(liste):
resultat = []
while liste:
min_val = trouver_minimum(liste)
resultat.append(min_val)
liste.remove(min_val)
return resultat
# test
tri_simple([42, 17, 8, 23, 56, 34, 12, 89, 5, 31])
Écrire la fonction de tri par sélection et celle de tri par insertion.
# Tri par sélection
def tri_selection(liste):
for i in range(len(liste)):
min_index = i
for j in range(i + 1, len(liste)):
if liste[j] < liste[min_index]:
min_index = j
liste[i], liste[min_index] = liste[min_index], liste[i]
return liste
# test
tri_selection([42, 17, 8, 23, 56, 34, 12, 89, 5, 31])
# Tri par insertion
def tri_insertion(liste):
for i in range(1, len(liste)):
cle = liste[i]
j = i - 1
while j >= 0 and cle < liste[j]:
liste[j + 1] = liste[j]
j -= 1
liste[j + 1] = cle
return liste
# test
tri_insertion([42, 17, 8, 23, 56, 34, 12, 89, 5, 31])
À partir du dictionnaire suivant :
donnees = [
{"ville": "Paris", "superficie": 105.4, "habitants": 2148000},
{"ville": "Marseille", "superficie": 240.62, "habitants": 870018},
{"ville": "Lyon", "superficie": 47.87, "habitants": 522228},
{"ville": "Toulouse", "superficie": 118.3, "habitants": 471941},
{"ville": "Nice", "superficie": 71.92, "habitants": 342669},
{"ville": "Nantes", "superficie": 65.19, "habitants": 303382},
{"ville": "Strasbourg", "superficie": 78.26, "habitants": 280966},
{"ville": "Montpellier", "superficie": 56.88, "habitants": 285121},
{"ville": "Bordeaux", "superficie": 49.36, "habitants": 254436},
{"ville": "Lille", "superficie": 34.83, "habitants": 233897},
{"ville": "Rennes", "superficie": 50.39, "habitants": 217728},
{"ville": "Reims", "superficie": 46.9, "habitants": 184076},
{"ville": "Le Havre", "superficie": 46.95, "habitants": 169733},
{"ville": "Saint-Étienne", "superficie": 79.97, "habitants": 173089},
{"ville": "Toulon", "superficie": 42.84, "habitants": 176198}
]
Modifier la fonction de tri par sélection en tri_selection_dictionnaire
pour trier la liste donnees
par ordre alphabétique des villes.
# Modification du tri par sélection pour trier un dictionnaire
def tri_selection_dictionnaire(liste):
for i in range(len(liste)):
min_index = i
for j in range(i + 1, len(liste)):
if liste[j]['ville'] < liste[min_index]['ville']:
min_index = j
liste[i], liste[min_index] = liste[min_index], liste[i]
return liste
# Exemple de données
donnees = [
{"ville": "Paris", "superficie": 105.4, "habitants": 2148000},
{"ville": "Marseille", "superficie": 240.62, "habitants": 870018},
{"ville": "Lyon", "superficie": 47.87, "habitants": 522228},
{"ville": "Toulouse", "superficie": 118.3, "habitants": 471941},
{"ville": "Nice", "superficie": 71.92, "habitants": 342669},
{"ville": "Nantes", "superficie": 65.19, "habitants": 303382},
{"ville": "Strasbourg", "superficie": 78.26, "habitants": 280966},
{"ville": "Montpellier", "superficie": 56.88, "habitants": 285121},
{"ville": "Bordeaux", "superficie": 49.36, "habitants": 254436},
{"ville": "Lille", "superficie": 34.83, "habitants": 233897},
{"ville": "Rennes", "superficie": 50.39, "habitants": 217728},
{"ville": "Reims", "superficie": 46.9, "habitants": 184076},
{"ville": "Le Havre", "superficie": 46.95, "habitants": 169733},
{"ville": "Saint-Étienne", "superficie": 79.97, "habitants": 173089},
{"ville": "Toulon", "superficie": 42.84, "habitants": 176198}
]
# Test : Tri par ordre alphabétique des villes
tri_ville = tri_selection_dictionnaire(donnees)
print("Tri par ordre alphabétique des villes:", tri_ville)
Tri par ordre alphabétique des villes: [{'ville': 'Bordeaux', 'superficie': 49.36, 'habitants': 254436}, {'ville': 'Le Havre', 'superficie': 46.95, 'habitants': 169733}, {'ville': 'Lille', 'superficie': 34.83, 'habitants': 233897}, {'ville': 'Lyon', 'superficie': 47.87, 'habitants': 522228}, {'ville': 'Marseille', 'superficie': 240.62, 'habitants': 870018}, {'ville': 'Montpellier', 'superficie': 56.88, 'habitants': 285121}, {'ville': 'Nantes', 'superficie': 65.19, 'habitants': 303382}, {'ville': 'Nice', 'superficie': 71.92, 'habitants': 342669}, {'ville': 'Paris', 'superficie': 105.4, 'habitants': 2148000}, {'ville': 'Reims', 'superficie': 46.9, 'habitants': 184076}, {'ville': 'Rennes', 'superficie': 50.39, 'habitants': 217728}, {'ville': 'Saint-Étienne', 'superficie': 79.97, 'habitants': 173089}, {'ville': 'Strasbourg', 'superficie': 78.26, 'habitants': 280966}, {'ville': 'Toulon', 'superficie': 42.84, 'habitants': 176198}, {'ville': 'Toulouse', 'superficie': 118.3, 'habitants': 471941}]
À partir du dictionnaire suivant :
autres_donnees = [
{"ville": "Bordeaux", "pays": "France", "code_postal": 33000},
{"ville": "Le Havre", "pays": "France", "code_postal": 76600},
{"ville": "Lille", "pays": "France", "code_postal": 59000},
{"ville": "Lyon", "pays": "France", "code_postal": 69000},
{"ville": "Marseille", "pays": "France", "code_postal": 13000},
{"ville": "Montpellier", "pays": "France", "code_postal": 34000},
{"ville": "Nantes", "pays": "France", "code_postal": 44000},
{"ville": "Nice", "pays": "France", "code_postal": 6000},
{"ville": "Paris", "pays": "France", "code_postal": 75000},
{"ville": "Reims", "pays": "France", "code_postal": 51100},
{"ville": "Rennes", "pays": "France", "code_postal": 35000},
{"ville": "Saint-Étienne", "pays": "France", "code_postal": 42000},
{"ville": "Strasbourg", "pays": "France", "code_postal": 67000},
{"ville": "Toulon", "pays": "France", "code_postal": 83000},
{"ville": "Toulouse", "pays": "France", "code_postal": 31000}
]
Réaliser une jointure entre la liste existante donnees
et la liste autres_donnees
, en utilisant la clé commune "ville" pour fusionner les informations des deux listes dans une nouvelle liste ?
# Fonction pour joindre deux listes de dictionnaires sur une clé commune
def jointer_listes(liste1, liste2):
resultat = []
for item1 in liste1:
for item2 in liste2:
if item1["ville"] == item2["ville"]:
fusion = {}
# Copier les clés et valeurs de item1
for key, value in item1.items():
fusion[key] = value
# Copier les clés et valeurs de item2 (les valeurs de item2 écrasent celles de item1 en cas de conflit)
for key, value in item2.items():
fusion[key] = value
resultat.append(fusion)
return resultat
# Autres données
autres_donnees = [
{"ville": "Bordeaux", "pays": "France", "code_postal": 33000},
{"ville": "Le Havre", "pays": "France", "code_postal": 76600},
{"ville": "Lille", "pays": "France", "code_postal": 59000},
{"ville": "Lyon", "pays": "France", "code_postal": 69000},
{"ville": "Marseille", "pays": "France", "code_postal": 13000},
{"ville": "Montpellier", "pays": "France", "code_postal": 34000},
{"ville": "Nantes", "pays": "France", "code_postal": 44000},
{"ville": "Nice", "pays": "France", "code_postal": 6000},
{"ville": "Paris", "pays": "France", "code_postal": 75000},
{"ville": "Reims", "pays": "France", "code_postal": 51100},
{"ville": "Rennes", "pays": "France", "code_postal": 35000},
{"ville": "Saint-Étienne", "pays": "France", "code_postal": 42000},
{"ville": "Strasbourg", "pays": "France", "code_postal": 67000},
{"ville": "Toulon", "pays": "France", "code_postal": 83000},
{"ville": "Toulouse", "pays": "France", "code_postal": 31000}
]
# Test
donnees_jointees = jointer_listes(donnees, autres_donnees)
print("Données jointes :", donnees_jointees)
Données jointes : [{'ville': 'Bordeaux', 'superficie': 49.36, 'habitants': 254436, 'pays': 'France', 'code_postal': 33000}, {'ville': 'Le Havre', 'superficie': 46.95, 'habitants': 169733, 'pays': 'France', 'code_postal': 76600}, {'ville': 'Lille', 'superficie': 34.83, 'habitants': 233897, 'pays': 'France', 'code_postal': 59000}, {'ville': 'Lyon', 'superficie': 47.87, 'habitants': 522228, 'pays': 'France', 'code_postal': 69000}, {'ville': 'Marseille', 'superficie': 240.62, 'habitants': 870018, 'pays': 'France', 'code_postal': 13000}, {'ville': 'Montpellier', 'superficie': 56.88, 'habitants': 285121, 'pays': 'France', 'code_postal': 34000}, {'ville': 'Nantes', 'superficie': 65.19, 'habitants': 303382, 'pays': 'France', 'code_postal': 44000}, {'ville': 'Nice', 'superficie': 71.92, 'habitants': 342669, 'pays': 'France', 'code_postal': 6000}, {'ville': 'Paris', 'superficie': 105.4, 'habitants': 2148000, 'pays': 'France', 'code_postal': 75000}, {'ville': 'Reims', 'superficie': 46.9, 'habitants': 184076, 'pays': 'France', 'code_postal': 51100}, {'ville': 'Rennes', 'superficie': 50.39, 'habitants': 217728, 'pays': 'France', 'code_postal': 35000}, {'ville': 'Saint-Étienne', 'superficie': 79.97, 'habitants': 173089, 'pays': 'France', 'code_postal': 42000}, {'ville': 'Strasbourg', 'superficie': 78.26, 'habitants': 280966, 'pays': 'France', 'code_postal': 67000}, {'ville': 'Toulon', 'superficie': 42.84, 'habitants': 176198, 'pays': 'France', 'code_postal': 83000}, {'ville': 'Toulouse', 'superficie': 118.3, 'habitants': 471941, 'pays': 'France', 'code_postal': 31000}]