Listes et dictionnaires en intention

by Christian Nguyen, Joseph Razik, last modified on 2019-10-18
Comprehension_list_dict

Comprehension list (liste en intention)

In [1]:
import pocketnoobj
Initialisation de l'espace de nommage fait.
In [2]:
# il existe plusieurs façon de créer une liste
li = [1, 2, 3]
li += [4]
append(li, 5)
print(li)
[1, 2, 3, 4, 5]
In [3]:
# on peut utiliser la fonction python range
li = list(range(10))
print(li)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [4]:
# comment créer une liste de tous les éléments entre 1 et 50 qui sont à la fois multiple de 3 et multiple de 5 ?
# 1. méthode usuelle
li = list()
for i in range(1, 51):
    if i%3 == 0:
        if i%5 == 0:
            append(li, i)
print(li)

# 2. méthode avec les "comprehension list"
li = [i for i in range(1, 51) if i%3 == 0 and i%5 == 0]
print(li)
[15, 30, 45]
[15, 30, 45]
In [5]:
# Si nous voulons maintenant le carré de tout ces nombres, en une seule instruction
li = [i**2 for i in range(1, 51) if i%3 == 0 and i%5 == 0]
print(li)
[225, 900, 2025]

Comprehension dictionary

In [6]:
# créer un dictionnaire avec les nombres paires inférieurs à 10 comme clé et leur carré comme valeur
d = {i: i**2 for i in range(10) if i%2==0}
print(d)
{0: 0, 8: 64, 2: 4, 4: 16, 6: 36}
In [7]:
# utilisation avec deux listes
a = list('python')  # on utilise la liste des lettres formant le mot python
# on veut un dictionnaire associant à une position sa lettre
d = {i: a[i] for i in range(len(a))}
print(d)
{0: 'p', 1: 'y', 2: 't', 3: 'h', 4: 'o', 5: 'n'}
In [8]:
# pour associer deux listes d'élements quelconques un à un, on peut utiliser la fonction zip
# soit la liste des lettres azertyuiop, on veut associer ses éléments à ceux de la chaîne "python"
In [9]:
d = dict(zip(list('azertuiop'), list('python')))
print(d)
{'r': 'h', 'a': 'p', 'u': 'n', 'z': 'y', 't': 'o', 'e': 't'}
In [10]:
# une autre fonction intéressante est "enumerate"
print(list(enumerate(a, 5)))
[(5, 'p'), (6, 'y'), (7, 't'), (8, 'h'), (9, 'o'), (10, 'n')]
In [11]:
# qui est l'équivalent de 
print([(i+5, a[i]) for i in range(len(a))])
[(5, 'p'), (6, 'y'), (7, 't'), (8, 'h'), (9, 'o'), (10, 'n')]