Des requêtes simples☘
Dans les exercices qui suivent, on dispose d'une liste constituée de tuples (nom, prénom, année de naissance):.
personnes = [ ('Labrosse', 'Adam', 2000),
('Gemlamorte', 'Adèle', 1985),
('Auboisdormant', 'Abel', 2001),
('Etpan', 'Ahmed', 1975),
('Térieur', 'Alain', 1999),
('Térieur', 'Alex', 1976),
('Tanrien', 'Jean', 2010),
('Ouzi', 'Jacques', 1950),
('Deuf', 'John', 2006),
('Provist', 'Alain', 2011)
]
On suppose que ceci n'est qu'une petite partie de la liste...il n'est évidemment pas question dans la suite de lire les réponses sur la liste de départ, il faut créer un code qui construira seul la réponse.
Note
Le travail effectué ici est proche de ce que vous ferez en terminale avec le langage SQL. Ce travail sera prolongé cette année lorsque nous parlerons du format csv.
Question☘
Créer la liste des noms des personnes.
Solution
Un code possible:
noms = [nom for (nom, _, _) in personnes]
Remarque
Pour supprimer les doublons, il est possible d'utiliser l'astuce suivante:
- on transforme la liste en ensemble avec
set
(ce qui supprime automatiquement les doublons). - on transforme ensuite le résultat en liste avec
list
.
noms = list(set([nom for (nom, _, _) in personnes]))
Question☘
Créer la liste des couples (nom, prénom) des personnes.
Solution
[(nom, prenom) for (nom, prenom, _) in personnes]
Question☘
Créer la liste des couples (nom, prénom) des personnes dont le nom commence par la lettre T.
Solution
[(nom, prenom) for (nom, prenom, _) in personnes if nom[0] == 'T']
Question☘
Créer la liste des tuples (nom, prénom, année de naissance) des personnes qui sont nées avant l'année 1999.
Solution
[(nom, prenom, annee) for (nom, prenom, annee) in personnes if annee < 1999]
Question☘
Créer la liste des tuples (nom, prénom, année de naissance) des personnes qui sont nées entre 1975 et 1985 (extrêmes compris).
Solution
[(nom, prenom, annee) for (nom, prenom, annee) in personnes if 1975 <= annee <= 1985]
Question☘
Créer la liste des tuples (nom, prénom, année de naissance) des personnes dont le prénom est Ahmed ou le prénom est Alain.
Solution
[(nom, prenom, annee) for (nom, prenom, annee) in personnes if prenom in ('Alain', 'Ahmed')]
On peut aussi écrire:
[(nom, prenom, annee) for (nom, prenom, annee) in personnes if prenom == 'Alain' or prenom == 'Ahmed']
Question☘
Créer la liste des tuples (nom, prénom) des personnes dont le prénom n'est ni Ahmed, ni Alain.
Solution
[(nom, prenom) for (nom, prenom, _) in personnes if prenom not in ('Alain', 'Ahmed')]
ou
[(nom, prenom) for (nom, prenom, _) in personnes if prenom != 'Alain' and prenom != 'Ahmed']
Question☘
Créer la liste contenant l'année de naissance de Labrosse.
Solution
[annee for (nom, _, annee) in personnes if nom == 'Labrosse']
Question☘
Créer la liste contenant les années de naissance des personnes de prénom Alain.
Solution
[annee for (_, prenom, annee) in personnes if prenom == "Alain"]
Question☘
Créer la liste des couples (nom, prénom) des personnes plus âgées que Adèle Gemlamorte.
Solution
[(nom, prenom)
for (nom, prenom, annee) in personnes
if annee < [an for (n,p,an) in personnes if (n,p)==('Gemlamorte', 'Adèle')][0]]