# Listes



Une liste est une collection **ordonnée** et **modifiable**. C'est ce qui se rapproche le plus des tableaux (array).



##### Créer une liste:

```python
liste = []
```

```python
# Constructor list()
liste = list(("alpha", "banana", "cherry"))
```

##### Ajouter une valeur (append):

```python
>>> liste = [1,2,3]
>>> liste
[1, 2, 3]

>>>> liste.append(4)
>>> liste
[1, 2, 3, 4]

>>> liste.append("Bonjour")
>>> liste
[1, 2, 3, 4, 'Bonjour']
```

##### Afficher un item:

```python
>>> liste = [1, 2, 3, 4, 'Bonjour']
>>> liste[0]
1
>>> liste[4]
'Bonjour'
```

##### Modifier un item:

```python
>>> liste[4] = "Hello"
>>> liste
[1, 2, 3, 4, 'Hello']
```

##### Supprimer un item (remove):

```python
>>> liste = [1, 2, 3, 4, 'Hello']
>>> liste.remove(2)
>>> liste
[1, 3, 4, 'Hello']
```

##### Supprimer un item (pop):

```python
>>> liste = [1, 2, 3, 4, 'Hello']
>>> liste.pop()	# supprimer l'index spécifié ou le dernier
>>> liste
[1, 2, 3, 4]
```

##### Supprimer un item (del):

```python
>>> liste = [1, 2, 3, 4, 'Hello']
>>> del liste[1]
>>> liste
[1, 3, 4, 'Hello']
```

##### Supprimer la liste (del):

```python
>>> liste = [1, 2, 3, 4, 'Hello']
>>> del liste
>>> liste
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'liste' is not defined
```

##### Vider la liste (clear):

```python
>>> liste = [1, 2, 3, 4, 'Hello']
>>> liste.clear()
>>> liste
[]
```

##### Inverser les items (reverse):

```python
>>> liste = [1, 3, 4, 'Hello']
>>> liste.reverse()
>>> liste
['Hello', 4, 3, 1]
```

##### Nb d'items (len):

```python
>>> liste = ['Hello', 4, 3, 1]
>>> len(liste)
4
```

##### Nb d'occurences d'une valeur (count):

```python
>>> liste = [1, 2, 3, 4, 'Bonjour', 1, 1]
>>> liste
[1, 2, 3, 4, 'Bonjour', 1, 1]
>>> liste.index(1)
0
>>> liste.count(1)
3
```

##### Index d'une valeur (index):

```python
>>> liste = [1, 2, 3, 4, 'Bonjour', 1, 1]
>>> liste.index("Bonjour")
4
```

##### Manipuler une liste:

```python
>>> liste = [1, 2, 3, 4, 'Bonjour', 1, 1]
>>> liste
[1, 2, 3, 4, 'Bonjour', 1, 1]

# Dernière occurence
>>> liste[-1]
1

# 3e occurence en partant de la fin
>>> liste[-3]
'Bonjour'

# 2 premières occurences
>>> liste[:2]
[1, 2]

# 3 dernières occurences
>>> liste[-3:]
['Bonjour', 1, 1]

# vider la liste
>>> liste[:] = []
>>> 
```

##### Boucle:

```python
>>> liste = [1, 2, 3, 4, 'Bonjour', 1, 1]
>>> for i in liste:
...     print (i)
...
1
2
3
4
Bonjour
1
1


```

##### Boucle (avec l'index):

```python
>>> liste = [1, 2, 3, 4, 'Bonjour', 1, 1]
>>> for i in enumerate(liste):
...     print (i)
...
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 'Bonjour')
(5, 1)
(6, 1)
# Les valeurs retournées par la boucle sont des tuples.
```

##### Copier une liste:

```python
>>> x = [1, 2, 3]
>>> y = x[:]
>>> y[0] = 0
>>> x
[1, 2, 3]
>>> y
[0, 2, 3]
```

##### Transformer une string en liste (split):

```python
>>> string = "Language:Version:OS"
>>> z = string.split(":")
>>> z
['Language', 'Version', 'OS']
```

##### Transformer une liste en string  (join):

```python
>>> liste = ['semis','date','lune']
>>> ";".join(liste)
'semis;date;lune'
```

##### Trouver un item dans une liste (in):

```python
>>> liste = ['semis','date','lune']
>>> 'lune' in liste
True
>>> 'meteo' in liste
False
```

##### Range:

```python
>>> range(0, 10)
```

##### Concaténer 2 listes (extend, +):

```python
>>> a = [1, 2, 3]
>>> b = [4, 5 ,6]
>>> a.extend(b)
>>> print(a)
[1, 2, 3, 4, 5, 6]

>>> a.extend([7, 8, 9])
>>> print(a)
[1, 2, 3, 7, 8, 9]

>>> c = a + b
>>> print(c)
[1, 2, 3, 4, 5, 6, 4, 5, 6]
```

##### Multiplier une liste (utile pour l'initialiser):

```python
>>> a = [0] * 4
>>> print(a)
[0, 0, 0, 0]
```

##### Vérifier si un item est présent dans une liste:

```python
thislist = ["alpha", "beta", "gamma"]
if "alpha" in thislist:
  print("Oui, 'alpha' est dans la liste") 
```

##### Liste d'éléments de types différents:

```python
>>> s = [1, 3, 3.14, ("bon","jour"), [5, 7]]
>>> len(s)
5
>>> len(s[3])   				# tuple
2
>>> len(s[3][1])        # tuple - str "jour"
4
>>> s[4][1] = 666       # sous-liste - int 7
>>> s
[1, 3, 3.14, ('bon', 'jour'), [5, 666]]
```



#### Méthodes:

| Méthode   | Description |
| --------- | ----------- |
| append()  |             |
| clear()   |             |
| copy()    |             |
| count()   |             |
| extend()  |             |
| index()   |             |
| insert()  |             |
| pop()     |             |
| remove()  |             |
| reverse() |             |
| sort()    |             |

