teaching:progappchim:slices

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
teaching:progappchim:slices [2014/02/10 14:32] – créée villersdteaching:progappchim:slices [2022/01/02 10:15] (Version actuelle) villersd
Ligne 2: Ligne 2:
 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 -*-
Ligne 34: Ligne 34:
 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]]
 +
  • teaching/progappchim/slices.1392039129.txt.gz
  • Dernière modification : 2014/02/10 14:32
  • de villersd