Sam & Max: Python, Django, Git et du cul » slicing http://sametmax.com Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 14:20:37 +0000 en hourly 1 http://wordpress.org/?v=3.3.1 Connaissez vous l’objet slice en Python ? http://sametmax.com/connaissez-vous-lobjet-slice-en-python/ http://sametmax.com/connaissez-vous-lobjet-slice-en-python/#comments Tue, 27 Aug 2013 07:56:08 +0000 Sam http://sametmax.com/?p=7218 slice en Python ? What the actual fucking fuck ?]]> Python, le langage sans fond. Arriverai-je à n’avoir plus jamais d’article à écrire un jour ?

Tenez, hier, j’étais en train de lire un blog sur le Web, le bourrelet paresseusement calé entre mon dossier et la table, quand soudain, boum !

Je tombe sur ça :

>>> slice
<type 'slice'>

Aucun import. Rien.

Attend, il y a un type built-in slice en Python ? What the actual fucking fuck ?

Alors je testouille un truc, y croyant vaguement :

>>> lst = ['a', 'b', 'c', 'd']
>>> lst[1:3]
[u'b', u'c']
>>> lst[slice(1,3)]
[u'b', u'c']

Donc plutôt que de se trimbaler avec des tuples de valeurs dont il faudra tester ou imposer la taille. Plutôt que d’attendre en paramètre uniquement des entiers positionnels ou forcer le passage de None, on peut aussi tout simplement passer un slice à vos fonctions qui font du slicing.

Ça veut dire des objets slices en valeurs par défaut.

Ça veut dire des objets slices dans les mapping, les iterables, etc.

Un seul regret :

>>> from itertools import islice
>>> islice(lst, slice)
Traceback (most recent call last):
  File "<ipython-input-5-7eb2c7533070>", line 1, in <module>
    islice(lst, slice(1,3))
ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= maxint.

Et ça c’est vraiment con.

flattr this!

]]>
http://sametmax.com/connaissez-vous-lobjet-slice-en-python/feed/ 11