Listes (non électorales)

On commence pas Marc Poulin "Mastering Python Lists". 102 pages, c'est accessible.
Petite mention sur les "virgules trainantes", je venais de voir une vdo à ce sujet : Miguel Grinberg

Using Trailing Commas in Python : https://www.youtube.com/watch?v=2ct_kO3mCDc
page 10
page 13

On peut créer une liste vide de 2 manières :
1/ ma_liste = []
2/ ma_liste = list()
ce n'est déjà pas sympa de balancer ici des parentheses, et là des crochets. Mais bon... python, c'est ça : des parentheses, puis "pas des parentheses", des crochets, des accolades. Vaut mieux avoir ses lunettes pas loin.

Les compréhensions de liste python

basiques

une définition litterale de liste
x = [   [] , [] , [],   ]
x est une "global frame" ou "cadre global" et chaque liste vide est un object/objet.

Une compréhension de liste
x = [   []  for i in range(5)  ]
pour obtenir : x = [[], [], [], [], []]
on remplacera [] par les valeurs de son choix
et on évitera d'utiliser l'operateur * selon l'auteur,

”Avoid Using The Repeat Operator Lists, like other sequence types, support the repeat operator *. It may be tempting to use the repeat operator to generate a list of empty lists.
Be careful! This will NOT create distinct sub-lists. Instead, it will create ONE
sub-list and ll the main list with multiple references to that ONE list.”
Et il est vrai que si on compare avec des id[] on s'apercoit que dans la comprehension list on obtient des sous listes avec des id différent, mais que si l'on se contente de multiplier, on aura plusieurs sous listes qui seront une seule et même sous liste reproduites à l'identique. Les cas concrets vont attendre mais c'est à noter.

On peut créer un set en passant la liste par la fonction set(). Les doublons seront éliminés. Ainsi :
x = set ([1,1,1]) va produire {1}.