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]] |
| |