Exploration des types construits en python
Dans ce cours, nous allons explorer les types construits (ou composés) en Python. Ces structures de données fondamentales permettent de regrouper et d'organiser plusieurs éléments. Nous aborderons les listes, tuples, dictionnaires et ensembles, leurs caractéristiques et leurs cas d'utilisation.
Les types construits (ou composés) sont des structures de données fondamentales en Python qui permettent de regrouper et d'organiser plusieurs éléments. Contrairement aux types simples (int, float, str), ils peuvent contenir plusieurs valeurs et offrent des méthodes spécialisées pour leur manipulation.
ma_liste[0]
fruits = ["pomme", "banane", "orange"]
# Création et manipulation nombres = [1, 2, 3, 4, 5] nombres.append(6) # Ajouter un élément nombres[0] = 10 # Modifier un élément print(len(nombres)) # Longueur : 6
coordonnees = (10, 20) couleurs = ("rouge", "vert", "bleu") # Tuple à un élément (attention à la virgule) singleton = (42,)
etudiant = { "nom": "Martin", "âge": 20, "notes": [15, 18, 12] } print(etudiant["nom"]) # Accès par clé etudiant["ville"] = "Paris" # Ajout
couleurs1 = {"rouge", "vert", "bleu"} couleurs2 = {"bleu", "jaune", "rouge"} # Intersection communes = couleurs1 & couleurs2 # {"rouge", "bleu"} # Union toutes = couleurs1 | couleurs2
Type | Ordonné | Mutable | Doublons | Accès |
---|---|---|---|---|
Liste | ✔️ Oui | ✔️ Oui | ✔️ Autorisés | Par index |
Tuple | ✔️ Oui | ❌ Non | ✔️ Autorisés | Par index |
Dictionnaire | ✔️ Oui (Python 3.7+) | ✔️ Oui | ❌ Clés uniques | Par clé |
Ensemble | ❌ Non | ✔️ Oui | ❌ Interdits | Itération uniquement |
taches = ["réviser", "faire courses", "appeler médecin"] taches.append("lire livre") # Ajout facile
point_3d = (10, 20, 30) couleur_rgb = (255, 128, 0)
inventaire = {"pommes": 50, "poires": 30, "bananes": 20}
langages = {"Python", "Java", "C++", "Python"} # Pas de doublon print(len(langages)) # 3
ma_liste = [1, 2, 3] mon_tuple = tuple(ma_liste) # (1, 2, 3) nouvelle_liste = list(mon_tuple) # [1, 2, 3]
nombres = [1, 2, 2, 3, 3, 3] uniques = set(nombres) # {1, 2, 3}
data = {"a": 1, "b": 2} cles = list(data.keys()) # ["a", "b"] valeurs = list(data.values()) # [1, 2]
Vous maîtrisez maintenant les types construits en Python. Ces structures sont essentielles pour organiser et manipuler des données complexes. Chaque type a ses particularités et ses cas d'usage privilégiés. Le choix dépendra de vos besoins spécifiques en termes de mutabilité, d'ordre et de performance.
Vous devez gérer une liste de courses pour un supermarché.
1. Créez une liste `courses` contenant : "pain", "lait", "œufs", "beurre".
2. Ajoutez "fromage" à la fin de la liste.
3. Insérez "pommes" en deuxième position (index 1).
4. Supprimez "œufs" de la liste.
5. Affichez la liste finale et sa longueur.
# 1. Création de la liste initiale courses = ["pain", "lait", "œufs", "beurre"] print("Liste initiale :", courses) # 2. Ajout de "fromage" à la fin courses.append("fromage") print("Après ajout de fromage :", courses) # 3. Insertion de "pommes" en position 1 courses.insert(1, "pommes") print("Après insertion de pommes :", courses) # 4. Suppression de "œufs" courses.remove("œufs") print("Après suppression des œufs :", courses) # 5. Affichage final print("Liste finale :", courses) print("Longueur :", len(courses))Résultat :
Vous travaillez avec des coordonnées géographiques et des informations d'utilisateurs.
1. Créez un tuple `coordonnees` représentant Paris : (48.8566, 2.3522).
2. Créez un dictionnaire `utilisateur` avec les clés : "nom", "âge", "ville", "coordonnees".
3. Ajoutez une clé "email" au dictionnaire.
4. Modifiez l'âge de l'utilisateur.
5. Affichez toutes les clés et toutes les valeurs du dictionnaire.
6. Tentez de modifier les coordonnées directement (que se passe-t-il ?).
# 1. Création du tuple coordonnées coordonnees = (48.8566, 2.3522) print("Coordonnées de Paris :", coordonnees) # 2. Création du dictionnaire utilisateur utilisateur = { "nom": "Dupont", "âge": 25, "ville": "Paris", "coordonnees": coordonnees } print("Utilisateur initial :", utilisateur) # 3. Ajout d'une clé email utilisateur["email"] = "dupont@email.com" print("Après ajout email :", utilisateur) # 4. Modification de l'âge utilisateur["âge"] = 26 print("Après modification âge :", utilisateur) # 5. Affichage des clés et valeurs print("Clés :", list(utilisateur.keys())) print("Valeurs :", list(utilisateur.values())) # 6. Tentative de modification des coordonnées try: coordonnees[0] = 50.0 # Erreur : les tuples sont immuables except TypeError as e: print("Erreur :", e) print("Les tuples sont immuables, on ne peut pas les modifier.")Résultat :
Vous analysez les visiteurs d'un site web et leurs langages de programmation favoris.
1. Créez deux ensembles : `langages_2023` = {"Python", "JavaScript", "Java", "C++", "Go"} et `langages_2024` = {"Python", "JavaScript", "TypeScript", "Rust", "Go"}.
2. Trouvez les langages communs aux deux années.
3. Trouvez les langages qui ont disparu en 2024.
4. Trouvez les nouveaux langages de 2024.
5. Trouvez tous les langages mentionnés sur les deux années.
6. Vérifiez si "Python" est toujours populaire en 2024.
# 1. Création des ensembles langages_2023 = {"Python", "JavaScript", "Java", "C++", "Go"} langages_2024 = {"Python", "JavaScript", "TypeScript", "Rust", "Go"} print("Langages 2023 :", langages_2023) print("Langages 2024 :", langages_2024) # 2. Langages communs (intersection) communs = langages_2023 & langages_2024 # Ou : communs = langages_2023.intersection(langages_2024) print("Langages communs :", communs) # 3. Langages disparus en 2024 (différence) disparus = langages_2023 - langages_2024 # Ou : disparus = langages_2023.difference(langages_2024) print("Langages disparus :", disparus) # 4. Nouveaux langages de 2024 nouveaux = langages_2024 - langages_2023 print("Nouveaux langages 2024 :", nouveaux) # 5. Tous les langages (union) tous_langages = langages_2023 | langages_2024 # Ou : tous_langages = langages_2023.union(langages_2024) print("Tous les langages :", tous_langages) # 6. Vérification de la présence de Python python_populaire = "Python" in langages_2024 print("Python toujours populaire en 2024 :", python_populaire) # Statistiques print(f"Nombre de langages en 2023 : {len(langages_2023)}") print(f"Nombre de langages en 2024 : {len(langages_2024)}") print(f"Nombre total de langages différents : {len(tous_langages)}")Résultat :
Vous gérez un inventaire de produits avec leurs prix et quantités.
1. Créez un dictionnaire `inventaire` avec les produits : "pommes": (2.5, 50), "bananes": (1.8, 30), "oranges": (3.0, 25).
2. Calculez la valeur totale de l'inventaire (prix × quantité pour chaque produit).
3. Trouvez le produit le plus cher et le moins cher.
4. Ajoutez 20 pommes à l'inventaire.
5. Créez une liste des produits dont la quantité est inférieure à 30.
6. Convertissez les clés du dictionnaire en ensemble et affichez-le.
# 1. Création de l'inventaire (produit: (prix, quantité)) inventaire = { "pommes": (2.5, 50), "bananes": (1.8, 30), "oranges": (3.0, 25) } print("Inventaire initial :", inventaire) # 2. Calcul de la valeur totale valeur_totale = 0 for produit, (prix, quantite) in inventaire.items(): valeur_produit = prix * quantite print(f"{produit}: {prix}€ × {quantite} = {valeur_produit}€") valeur_totale += valeur_produit print(f"Valeur totale de l'inventaire : {valeur_totale}€") # 3. Produit le plus cher et le moins cher prix_max = max(inventaire.values(), key=lambda x: x[0]) prix_min = min(inventaire.values(), key=lambda x: x[0]) # Trouver les noms des produits produit_plus_cher = [k for k, v in inventaire.items() if v[0] == prix_max[0]][0] produit_moins_cher = [k for k, v in inventaire.items() if v[0] == prix_min[0]][0] print(f"Produit le plus cher : {produit_plus_cher} ({prix_max[0]}€)") print(f"Produit le moins cher : {produit_moins_cher} ({prix_min[0]}€)") # 4. Ajout de 20 pommes ancien_prix, ancienne_quantite = inventaire["pommes"] inventaire["pommes"] = (ancien_prix, ancienne_quantite + 20) print("Après ajout de 20 pommes :", inventaire["pommes"]) # 5. Produits avec quantité < 30 produits_faible_stock = [] for produit, (prix, quantite) in inventaire.items(): if quantite < 30: produits_faible_stock.append(produit) print("Produits avec stock < 30 :", produits_faible_stock) # 6. Conversion des clés en ensemble ensemble_produits = set(inventaire.keys()) print("Ensemble des produits :", ensemble_produits) print("Type :", type(ensemble_produits))Résultat :
Vous analysez les résultats d'une enquête sur les préférences musicales. Vous avez une liste de votes où chaque vote est un tuple (âge, genre_musical).
1. Créez la liste `votes` avec : [(25, "rock"), (30, "pop"), (22, "rock"), (28, "jazz"), (35, "pop"), (27, "rock"), (40, "jazz")].
2. Créez un dictionnaire comptant le nombre de votes par genre musical.
3. Trouvez le genre musical le plus populaire.
4. Calculez l'âge moyen des votants pour chaque genre musical.
5. Créez un ensemble des âges uniques des votants.
6. Déterminez quels genres musicaux sont préférés par les personnes de moins de 30 ans.
# 1. Création de la liste des votes votes = [(25, "rock"), (30, "pop"), (22, "rock"), (28, "jazz"), (35, "pop"), (27, "rock"), (40, "jazz")] print("Votes :", votes) # 2. Comptage des votes par genre comptage_genres = {} for age, genre in votes: if genre in comptage_genres: comptage_genres[genre] += 1 else: comptage_genres[genre] = 1 print("Comptage par genre :", comptage_genres) # 3. Genre le plus populaire genre_populaire = max(comptage_genres, key=comptage_genres.get) max_votes = comptage_genres[genre_populaire] print(f"Genre le plus populaire : {genre_populaire} ({max_votes} votes)") # 4. Âge moyen par genre ages_par_genre = {} for age, genre in votes: if genre not in ages_par_genre: ages_par_genre[genre] = [] ages_par_genre[genre].append(age) print("Âge moyen par genre :") for genre, ages in ages_par_genre.items(): age_moyen = sum(ages) / len(ages) print(f" {genre}: {age_moyen:.1f} ans") # 5. Ensemble des âges uniques ages_uniques = set() for age, genre in votes: ages_uniques.add(age) print("Âges uniques :", sorted(ages_uniques)) # 6. Genres préférés par les moins de 30 ans genres_jeunes = set() for age, genre in votes: if age < 30: genres_jeunes.add(genre) print("Genres préférés par les moins de 30 ans :", genres_jeunes) # Statistiques supplémentaires print(f"\nStatistiques :") print(f"Nombre total de votes : {len(votes)}") print(f"Nombre de genres différents : {len(comptage_genres)}") print(f"Âge minimum : {min(ages_uniques)}") print(f"Âge maximum : {max(ages_uniques)}") # Répartition par tranche d'âge moins_30 = sum(1 for age, _ in votes if age < 30) plus_30 = len(votes) - moins_30 print(f"Votants < 30 ans : {moins_30}") print(f"Votants ≥ 30 ans : {plus_30}")Résultat :
Un vendeur de voitures gagne une commission qui suit la loi de probabilité suivante :
Commission (€) | 200 | 500 | 800 | 1200 |
Probabilité | 0,4 | 0,3 | 0,2 | 0,1 |
1. Calculez l'espérance E(X) et l'écart-type σ(X).
2. Interprétez concrètement ces deux valeurs dans le contexte du problème.
3. Si le vendeur travaille 12 mois, quelle sera approximativement sa commission totale annuelle ?
Deux machines A et B produisent des pièces. Le nombre de pièces défectueuses par lot de 100 suit les lois suivantes :
• Machine A : E(X_A) = 3, σ(X_A) = 1,5
• Machine B : E(X_B) = 2, σ(X_B) = 3
1. Comparez la qualité moyenne des deux machines.
2. Comparez la régularité de production des deux machines.
3. Si vous deviez choisir une machine pour une production en série, laquelle choisiriez-vous ? Justifiez.
4. Calculez le coefficient de variation pour chaque machine et interprétez.
Une compagnie d'assurance étudie les sinistres automobiles. Le montant des réparations X (en milliers d'euros) suit la loi :
Montant (k€) | 0,5 | 2 | 5 | 10 | 20 |
Probabilité | 0,6 | 0,25 | 0,1 | 0,04 | 0,01 |
1. Calculez E(X) et σ(X).
2. Interprétez ces valeurs pour la compagnie d'assurance.
3. Si la compagnie veut constituer une réserve pour couvrir 95% des sinistres, quel montant doit-elle prévoir par sinistre ?
4. Comparez cette situation avec une autre compagnie où E(Y) = 3 k€ et σ(Y) = 1 k€.
Un restaurant étudie le temps d'attente des clients (en minutes). Les données donnent :
• Lundi : E(X) = 8 min, σ(X) = 2 min
• Vendredi : E(Y) = 12 min, σ(Y) = 6 min
1. Comparez la satisfaction client entre ces deux jours.
2. Quel jour présente le service le plus régulier ?
3. Si le restaurant veut garantir un temps d'attente maximal à 95% de ses clients, quelle limite doit-il afficher pour chaque jour ?
4. Le restaurant envisage d'embaucher un serveur supplémentaire le vendredi, ce qui réduirait les temps de 30%. Calculez les nouveaux paramètres et commentez.
Deux investissements financiers A et B ont les rendements annuels suivants :
• Investissement A : E(R_A) = 6%, σ(R_A) = 8%
• Investissement B : E(R_B) = 10%, σ(R_B) = 20%
1. Comparez la rentabilité et le risque de ces investissements.
2. Calculez le ratio de Sharpe (rendement/risque) pour chaque investissement et interprétez.
3. Un investisseur prudent souhaite limiter ses pertes potentielles à 5% maximum. Quel investissement lui conseillez-vous ?
4. Si on combine 60% de A et 40% de B dans un portefeuille (en supposant l'indépendance), calculez les caractéristiques du portefeuille et commentez l'effet de diversification.
Abonnez-vous maintenant et recevez notre newsletter hebdomadaire avec des matériaux éducatifs, de nouveaux cours, des articles intéressants, des livres populaires et bien plus encore !