369 votes

Qu'est-ce que :: (double colon) en Python?

Je sais que je peux utiliser quelque chose comme string [3: 4] pour obtenir une sous-chaîne en Python, mais qu'est-ce que c'est quelque chose [:: 3]?

Désolé, il est difficile de rechercher cela sur Google.

345voto

Adriano Varoli Piazza Points 3008

cela ne signifie rien pour le premier argument, rien pour le second, et saute de trois. Tous les trois éléments de la séquence sont tranchés. Les tranches étendues sont ce que vous voulez. Nouveau dans Python 2.3

228voto

deinst Points 8706

Les adresses de tranche de séquence Python peuvent être écrites sous la forme [start: end: step] et n'importe quel début, arrêt ou fin peuvent être supprimés. a[::3] est chaque troisième élément de la séquence.

117voto

Yuval Adam Points 59423

seq[::n] est une séquence de chaque élément n de la séquence entière.

Exemple:

 >>> range(10)[::2]
[0, 2, 4, 6, 8]
 

La syntaxe est la suivante:

 seq[start:end:step]
 

Alors tu peux faire:

 >>> range(100)[5:18:2]
[5, 7, 9, 11, 13, 15, 17]
 

77voto

Bolo Points 5671

Explication

s[i:j:k] est, selon la documentation, "tranche de s de i à j à l'étape k". Lors de l' i et j sont absents, l'ensemble de la séquence est supposé et donc s[::k] signifie "tous les k-ième élément".

Exemples

Tout d'abord, nous allons initialiser une liste:

>>> s = range(20)
>>> s
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Prenons tous les 3rd point de s:

>>> s[::3]
[0, 3, 6, 9, 12, 15, 18]

Prenons tous les 3rd point de s[2:]:

>>> s[2:]
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> s[2::3]
[2, 5, 8, 11, 14, 17]

Prenons tous les 3rd point de s[5:12]:

>>> s[5:12]
[5, 6, 7, 8, 9, 10, 11]
>>> s[5:12:3]
[5, 8, 11]

Prenons tous les 3rd point de s[:10]:

>>> s[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> s[:10:3]
[0, 3, 6, 9]

22voto

Justin Ethier Points 57486

Pour le découpage en Python le troisième paramètre est l'étape. Comme d'autres l'ont mentionné, voir l' Étendu des Tranches pour une belle vue d'ensemble.

Avec cette connaissance, [::3] signifie simplement que vous n'avez pas spécifié de début ou de fin d'indices pour votre tranche. Puisque vous avez spécifié une étape, 3, cela va prendre chaque troisième entrée de something à partir de la première index. Par exemple:

>>> '123123123'[::3]
'111'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X