| Prochaine révision | Révision précédente |
| teaching:progappchim:slices [2014/02/10 14:32] – créée villersd | teaching:progappchim:slices [2022/01/02 10:15] (Version actuelle) – villersd |
|---|
| L'utilisation des "slices" ou du "slicing" sur les listes, ou sur tout objet en séquence (tuple, chaîne de caractères, ...) permet de "découper" des sous-listes. Si la séquence s'appelle //sequence_name//, la syntaxe du slice est : sequence_name[start:stop:step] où start est l'indice du premier élément (par défaut 0), stop est l'indice du premier élément NON REPRIS (par défaut len(seq...)) et step le pas (par défaut step = 1). Les indices négatifs équivalent aux indices modulo len(seq...). | L'utilisation des "slices" ou du "slicing" sur les listes, ou sur tout objet en séquence (tuple, chaîne de caractères, ...) permet de "découper" des sous-listes. Si la séquence s'appelle //sequence_name//, la syntaxe du slice est : sequence_name[start:stop:step] où start est l'indice du premier élément (par défaut 0), stop est l'indice du premier élément NON REPRIS (par défaut len(seq...)) et step le pas (par défaut step = 1). Les indices négatifs équivalent aux indices modulo len(seq...). |
| |
| <sxh python; title : slices_01.py> | <code python slices_01.py> |
| #! /usr/bin/env python | #! /usr/bin/env python |
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- |
| a[5:5]=[8,9,10] | a[5:5]=[8,9,10] |
| print a # [1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 15] | print a # [1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 15] |
| </sxh> | </code> |
| |
| Les slices s'appliquent aussi sur les "arrays" de la librairie NumPy. | Les slices s'appliquent aussi sur les "arrays" de la librairie NumPy. |
| | |
| | ===== Slices et objets python, comparaison avec .reverse() ===== |
| | |
| | <note tip>La fonction id() permet de connaître l'identifiant unique d'un objet python en mémoire</note> |
| | Le slice "[::-1]" crée un nouvel objet qui est la liste dans l'ordre inversé des éléments de la liste d'origine, tandis que la fonctionnalité ".reverse()" appliquée à une liste effectue cette inversion sans créer une nouvelle liste. Les codes suivants permettent de le vérifier : |
| | |
| | <code python> |
| | a = [1, 2, 3] |
| | b = a |
| | a = a[::-1] |
| | print(a, b) |
| | |
| | # Output: [3, 2, 1] [1, 2, 3] |
| | |
| | print(id(a), id(b)) |
| | # → different identifiers |
| | </code> |
| | |
| | <code python> |
| | a = [1, 2, 3] |
| | b = a |
| | a.reverse() |
| | print(a, b) |
| | |
| | # Output: [3, 2, 1] [3, 2, 1] |
| | |
| | print(id(a), id(b)) |
| | # → same identifier |
| | </code> |
| | |
| | |
| | ===== Références ===== |
| | * [[https://medium.com/dev-genius/indexing-vs-slicing-in-python-de01cd99c499|Indexing vs Slicing in Python]] |
| | |