Exercice : Les tris et les filtres

Question

Afficher les communes au nord de Limoges classées par ordre croissant de code postal.

Indice

Le nord et le sud sont définis par la latitude.

La latitude est définie dans la colonne n°8.

Le code postal est défini dans la colonne n°2.

Il faut commencer par le tri puis rechercher la latitude de Limoges (la casse est importante) et enfin effectuer le filtre.

Solution

Tri croissant suivant le code postal

1
tableau.sort(key=lambda x:x[1],reverse=False)

Recherche de la latitude de Limoges

1
for i in range(len(tableau)):
2
    if tableau[i][2]=='BRESSUIRE':
3
        latitude=tableau[i][7]

Affichage des communes au nord de Limoges

1
for i in range(len(tableau)):
2
    if tableau[i][7]>latitude:
3
        print(tableau[i])
1
VAULRY
2
ROUSSAC
3
THOURON
4
COMPREIGNAC
5
CHAMBORET
6
LE BUIS
7
NANTIAT
8
SAINT-SYMPHORIEN-SUR-COUZE
9
SAINT-SULPICE-LES-FEUILLES
10
ARNAC-LA-POSTE
11
LES GRANDS-CHEZEAUX
12
CROMAC
13
MAILHAC-SUR-BENAIZE
14
SAINT-GEORGES-LES-LANDES
15
SAINT-LEGER-MAGNAZEIX
16
DROUX
17
VILLEFAVARD
18
MAGNAC-LAVAL
19
DOMPIERRE-LES-EGLISES
20
SAINT-HILAIRE-LA-TREILLE
21
SAINT-MARTIN-DE-JUSSAC
22
CHAILLAC-SUR-VIENNE
23
SAINT-JUNIEN
24
SAINT-BRICE-SUR-VIENNE
25
SAINT-SORNIN-LA-MARCHE
26
LA BAZEUGE
27
ORADOUR-SAINT-GENEST
28
LE DORAT
29
DINSAC
30
LA CROIX-SUR-GARTEMPE
31
SAINT-SYLVESTRE
32
SAINT-LAURENT-LES-EGLISES
33
AMBAZAC
34
FOLLES
35
BESSINES-SUR-GARTEMPE
36
SAINT-PARDOUX
37
FROMENTAL
38
COUZEIX
39
BONNAC-LA-COTE
40
CHAPTELAT
41
RANCON
42
CHATEAUPONSAC
43
BALLEDENT
44
SAINT-SORNIN-LEULAC
45
SAINT-AMAND-MAGNAZEIX
46
SAINT-BONNET-DE-BELLAC
47
BLANZAC
48
SAINT-JUNIEN-LES-COMBES
49
BELLAC
50
BERNEUIL
51
BLOND
52
SAINT-OUEN-SUR-GARTEMPE
53
PEYRAT-DE-BELLAC
54
BREUILAUFA
55
THIAT
56
BUSSIERE-POITEVINE
57
DARNAC
58
SAINT-BARBANT
59
GAJOUBERT
60
NOUIC
61
MORTEMART
62
BUSSIERE-BOFFY
63
SAINT-MARTIAL-SUR-ISOP
64
MONTROL-SENARD
65
MEZIERES-SUR-ISSOIRE
66
LES BILLANGES
67
SAINT-LEGER-LA-MONTAGNE
68
LA JONCHERE-SAINT-MAURICE
69
AZAT-LE-RIS
70
SAINT-MARTIN-LE-MAULT
71
LUSSAC-LES-EGLISES
72
TERSANNES
73
VERNEUIL-MOUSTIERS
74
LAURIERE
75
SAINT-SULPICE-LAURIERE
76
JABREILLES-LES-BORDES
77
BERSAC-SUR-RIVALIER
78
SAUVIAT-SUR-VIGE
79
SAINT-MARTIN-TERRESSUS
80
MOISSANNES
81
LE CHATENET-EN-DOGNON
82
LE PALAIS-SUR-VIENNE
83
SAINTE-MARIE-DE-VAUX
84
SAINT-VICTURNIEN
85
SAINT-PRIEST-TAURION
86
SAINT-GENCE
87
SAINT-JOUVENT
88
NIEUL
89
PEYRILHAC
90
ORADOUR-SUR-GLANE
91
CIEUX
92
JAVERDAT
93
VEYRAC
94
RILHAC-RANCON
95
RAZES
96
SAILLAT-SUR-VIENNE
97
JOUAC

Question

Afficher les communes dont le nom est composé de plusieurs mots, classées d'est en ouest.

Indice

L'ouest et l'est sont définis par la longitude. Les valeurs augmentent quand on se déplace vers l'est.

Indice

La longitude est définie dans la colonne n°9.

Indice

Les noms composés comporte un tiret ('-' in tableau[i][j]) ou un espace (' ' in tableau[i][j]).

Indice

Le nom des communes est défini dans la colonne n°3.

Indice

Il faut commencer par le tri puis effectuer le filtre.

Solution

Tri décroissant suivant la longitude (d'est en ouest)

1
tableau.sort(key=lambda x:x[8],reverse=True)

Affichage des communes ayant un nom composé

1
for i in range(len(tableau)):
2
    if '-' in tableau[i][2] or ' ' in tableau[i][2] :
3
        print(tableau[i])
1
BEAUMONT-DU-LAC
2
PEYRAT-LE-CHATEAU
3
SAINT-AMAND-LE-PETIT
4
SAINT-JULIEN-LE-PETIT
5
SAINTE-ANNE-SAINT-PRIEST
6
SAINT-GILLES-LES-FORETS
7
NEUVIC-ENTIER
8
CHATEAUNEUF-LA-FORET
9
LA CROISILLE-SUR-BRIANCE
10
SAUVIAT-SUR-VIGE
11
ROZIERS-SAINT-GEORGES
12
LA PORCHERIE
13
SAINT-MEARD
14
SAINT-VITTE-SUR-BRIANCE
15
LES BILLANGES
16
SAINT-DENIS-DES-MURS
17
JABREILLES-LES-BORDES
18
LE CHATENET-EN-DOGNON
19
SAINT-LEONARD-DE-NOBLAT
20
SAINT-GERMAIN-LES-BELLES
21
SAINT-BONNET-BRIANCE
22
LA JONCHERE-SAINT-MAURICE
23
SAINT-SULPICE-LAURIERE
24
SAINT-LAURENT-LES-EGLISES
25
SAINT-MARTIN-TERRESSUS
26
LA GENEYTOUSE
27
SAINT-PAUL
28
MAGNAC-BOURG
29
SAINT-LEGER-LA-MONTAGNE
30
SAINT-GENEST-SUR-ROSELLE
31
BERSAC-SUR-RIVALIER
32
SAINT-PRIEST-TAURION
33
SAINT-SULPICE-LES-FEUILLES
34
VICQ-SUR-BREUILH
35
SAINT-JUST-LE-MARTEL
36
LES GRANDS-CHEZEAUX
37
ARNAC-LA-POSTE
38
SAINT-HILAIRE-BONNEVAL
39
SAINT-SYLVESTRE
40
PIERRE-BUFFIERE
41
BESSINES-SUR-GARTEMPE
42
SAINT-AMAND-MAGNAZEIX
43
CHATEAU-CHERVIX
44
SAINT-GEORGES-LES-LANDES
45
RILHAC-RANCON
46
LE PALAIS-SUR-VIENNE
47
COUSSAC-BONNEVAL
48
MAILHAC-SUR-BENAIZE
49
SAINT-HILAIRE-LA-TREILLE
50
SAINT-JEAN-LIGOURE
51
SAINT-PRIEST-LIGOURE
52
SAINT-SORNIN-LEULAC
53
BONNAC-LA-COTE
54
SAINT-PARDOUX
55
LE VIGEN
56
LA ROCHE-L'ABEILLE
57
DOMPIERRE-LES-EGLISES
58
SAINT-MAURICE-LES-BROUSSES
59
CONDAT-SUR-VIENNE
60
SAINT-SYMPHORIEN-SUR-COUZE
61
SAINT-LEGER-MAGNAZEIX
62
SAINT-MARTIN-LE-MAULT
63
SAINT-JOUVENT
64
LE BUIS
65
BOSMIE-L'AIGUILLE
66
SAINT-YRIEIX-LA-PERCHE
67
LA MEYZE
68
LUSSAC-LES-EGLISES
69
MAGNAC-LAVAL
70
SAINT-HILAIRE-LES-PLACES
71
SAINT-GENCE
72
SAINT-JUNIEN-LES-COMBES
73
AIXE-SUR-VIENNE
74
VERNEUIL-SUR-VIENNE
75
LE CHALARD
76
SAINT-MARTIN-LE-VIEUX
77
VERNEUIL-MOUSTIERS
78
RILHAC-LASTOURS
79
LADIGNAC-LE-LONG
80
LA BAZEUGE
81
SAINT-PRIEST-SOUS-AIXE
82
SAINT-OUEN-SUR-GARTEMPE
83
LES CARS
84
LE DORAT
85
SAINT-YRIEIX-SOUS-AIXE
86
AZAT-LE-RIS
87
BUSSIERE-GALANT
88
SAINTE-MARIE-DE-VAUX
89
SAINT-VICTURNIEN
90
ORADOUR-SUR-GLANE
91
PEYRAT-DE-BELLAC
92
ORADOUR-SAINT-GENEST
93
COGNAC-LA-FORET
94
LA CROIX-SUR-GARTEMPE
95
SAINT-SORNIN-LA-MARCHE
96
SAINT-CYR
97
SAINT-LAURENT-SUR-GORRE
98
SAINT-BRICE-SUR-VIENNE
99
MONTROL-SENARD
100
SAINT-MARTIN-DE-JUSSAC
101
SAINT-BONNET-DE-BELLAC
102
SAINT-AUVENT
103
MEZIERES-SUR-ISSOIRE
104
CHAMPAGNAC-LA-RIVIERE
105
BUSSIERE-POITEVINE
106
SAINT-JUNIEN
107
ORADOUR-SUR-VAYRES
108
CHAILLAC-SUR-VIENNE
109
SAINT-MARTIAL-SUR-ISOP
110
BUSSIERE-BOFFY
111
SAINT-BARBANT
112
LA CHAPELLE-MONTBRANDEIX
113
SAILLAT-SUR-VIENNE
114
SAINT-BAZILE
115
SAINT-MATHIEU
116
LES SALLES-LAVAUGUYON
117
MAISONNAIS-SUR-TARDOIRE

Question

Afficher la commune ayant la plus petite superficie et celle qui a la plus grande superficie.

Indice

La superficie est définie dans la colonne n°6.

Indice

La première ligne du tableau est tableau[0]. La dernière ligne du tableau est [-1].

Solution

Tri croissant suivant la superficie.

1
tableau.sort(key=lambda x:x[5],reverse=False)

Affichage de la commune ayant la plus petite superficie

1
print(tableau[0])
1
['87101', '87330', 'MORTEMART', 'Commune simple', 293.0, 369.0, 0.1, 46.0484465758, 0.95503235222]

Affichage de la commune ayant la plus petite superficie

1
print(tableau[-1])
1
['87187', '87500', 'SAINT-YRIEIX-LA-PERCHE', 'Chef-lieu canton', 383.0, 10132.0, 6.9, 45.5251111514, 1.20386934296]

Question

Afficher les communes qui seraient menacées si le niveau de la mer augmentait de 300 mètres, triées en ordre croissant par leur nom.

Indice

L'altitude moyenne est définie dans la colonne n°5.

Indice

Le nom des communes est défini dans la colonne n°3.

Indice

Il faut commencer par le tri puis effectuer le filtre.

Solution

Tri croissant suivant le nom.

1
tableau.sort(key=lambda x:x[2],reverse=False)

Affichage des communes ayant une altitude moyenne inférieure ou égale à 200 m

1
for i in range(len(tableau)):
2
    if tableau[i][4]<=200 :
3
        print(tableau[i])
1
DARNAC
2
THIAT
3
VERNEUIL-MOUSTIERS