Qqn peut il me dire où je pourrais trouver l'explication de la syntaxe
du slicing.
On trouve facilement l'explication pour
a[n:m]
mais je n'ai pas trouver d'explication pour
a[n:m:p]
bien qu'avec quelques essais j'ai compris
que n est l'indice de départ, m l'indice maximum et p le pas
d'incrémentation de l'indice
mais il reste un point obsur :
supposons :
a="abcdefgh"
a[0:len(a):1] retourne la chaine complète (commence à 0 jusqu'à la fin
de chaine par pas de 1 OK)
mais
a[len(a):0:-1] retourne : 'hgfedcb'
alors que
a[len(a)::-1] retourne : 'hgfedcba'
que faut il mettre comme valeur en position centrale pour obtenir la
chaine inverse complète ?
philippe
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Do Re Mi chel La Si Do
a[::-1]
Tout simplement. Les "len(" sont inutiles, et peuvent tromper, car la longueur ne correspond pas à la position (e.g. longueur 1 pour le 1er élément indicé à 0).
@+
MCI
a[::-1]
Tout simplement. Les "len(" sont inutiles, et peuvent tromper, car la
longueur ne correspond pas à la position (e.g. longueur 1 pour le 1er
élément indicé à 0).
Tout simplement. Les "len(" sont inutiles, et peuvent tromper, car la longueur ne correspond pas à la position (e.g. longueur 1 pour le 1er élément indicé à 0).
@+
MCI
philippe
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
In article <43841d62$0$4355$, Do Re Mi chel La Si Do wrote:
a[::-1]
Tout simplement. Les "len(" sont inutiles, et peuvent tromper, car la longueur ne correspond pas à la position (e.g. longueur 1 pour le 1er élément indicé à 0).
@+
MCI
Merci de ta réponse mais
ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre
les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes
mais j'aimerais comprendre :-)
or
si je tape
a[::-1] retour toute la chaine inversée
a[:0:-1] dito sauf premier caractère
donc logiquement j'essaye
a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne
correspond à rien dan sla chaine, mais pour moi le pb ne fait que de
s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère
et avec -1 plus rien
In article <43841d62$0$4355$626a54ce@news.free.fr>, Do Re Mi chel La Si
Do <enleverlesO.OmcO@OmclaveauO.com> wrote:
a[::-1]
Tout simplement. Les "len(" sont inutiles, et peuvent tromper, car la
longueur ne correspond pas à la position (e.g. longueur 1 pour le 1er
élément indicé à 0).
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
In article <43841d62$0$4355$, Do Re Mi chel La Si Do wrote:
a[::-1]
Tout simplement. Les "len(" sont inutiles, et peuvent tromper, car la longueur ne correspond pas à la position (e.g. longueur 1 pour le 1er élément indicé à 0).
@+
MCI
Christophe
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
Je dirais que c'est impossible. Une limitation de la syntaxe de slicing pour les indices négatifs.
Tu remarqueras aussi que ces 2 formes sont équivalentes :
a[len(a)::-1] a[len(a)-1::-1]
Et que la deuxième est un plus précise.
Merci de ta réponse mais
ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre
les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes
mais j'aimerais comprendre :-)
Je dirais que c'est impossible. Une limitation de la syntaxe de slicing
pour les indices négatifs.
Tu remarqueras aussi que ces 2 formes sont équivalentes :
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
Je dirais que c'est impossible. Une limitation de la syntaxe de slicing pour les indices négatifs.
Tu remarqueras aussi que ces 2 formes sont équivalentes :
a[len(a)::-1] a[len(a)-1::-1]
Et que la deuxième est un plus précise.
Richard Delorme
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et -len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le dernier élément jusqu'au dernier élément exclus, donc une liste vide. a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au premier exclus, donc n'affiche pas le premier élément. En fait, la liste entière inversée peut-être obtenue avec : a[-1:-len(a)-1:-1]
-- Richard
Merci de ta réponse mais
ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre
les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes
mais j'aimerais comprendre :-)
or
si je tape
a[::-1] retour toute la chaine inversée
a[:0:-1] dito sauf premier caractère
donc logiquement j'essaye
a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne
correspond à rien dan sla chaine, mais pour moi le pb ne fait que de
s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère
et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et
-len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le
dernier élément jusqu'au dernier élément exclus, donc une liste vide.
a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au
premier exclus, donc n'affiche pas le premier élément.
En fait, la liste entière inversée peut-être obtenue avec :
a[-1:-len(a)-1:-1]
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et -len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le dernier élément jusqu'au dernier élément exclus, donc une liste vide. a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au premier exclus, donc n'affiche pas le premier élément. En fait, la liste entière inversée peut-être obtenue avec : a[-1:-len(a)-1:-1]
-- Richard
Christophe
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et -len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le dernier élément jusqu'au dernier élément exclus, donc une liste vide. a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au premier exclus, donc n'affiche pas le premier élément. En fait, la liste entière inversée peut-être obtenue avec : a[-1:-len(a)-1:-1]
Je n'avais pas pensé à faire ça comme ça, bien joué :)
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre
les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes
mais j'aimerais comprendre :-)
or
si je tape
a[::-1] retour toute la chaine inversée
a[:0:-1] dito sauf premier caractère
donc logiquement j'essaye
a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne
correspond à rien dan sla chaine, mais pour moi le pb ne fait que de
s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1
plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et
-len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le
dernier élément jusqu'au dernier élément exclus, donc une liste vide.
a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au
premier exclus, donc n'affiche pas le premier élément.
En fait, la liste entière inversée peut-être obtenue avec :
a[-1:-len(a)-1:-1]
Je n'avais pas pensé à faire ça comme ça, bien joué :)
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et -len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le dernier élément jusqu'au dernier élément exclus, donc une liste vide. a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au premier exclus, donc n'affiche pas le premier élément. En fait, la liste entière inversée peut-être obtenue avec : a[-1:-len(a)-1:-1]
Je n'avais pas pensé à faire ça comme ça, bien joué :)
philippe
Merci pour cette explication, en fait il ne faut pas oublier qu'en indice négatif on fonctionne "en marche arrière" Donc on peut supposer que qd on écrit a[::-1] il y a (de façon interne) une substitution du genre de celle que tu indiques : a[-1:-(len(a)+1):-1] qui permet de parcourir la chaine intégralement Merci d'avoir pris a peine de me donner une réponse à une question pas variment essentielle mais qui me "turlupinait" depsui que j'étais tombé sur la diabolique expression : a[::-1] philippe
In article <438441d6$0$4376$, Richard Delorme wrote:
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et -len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le dernier élément jusqu'au dernier élément exclus, donc une liste vide. a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au premier exclus, donc n'affiche pas le premier élément. En fait, la liste entière inversée peut-être obtenue avec : a[-1:-len(a)-1:-1]
Merci pour cette explication, en fait il ne faut pas oublier qu'en
indice négatif on fonctionne "en marche arrière"
Donc on peut supposer que qd on écrit
a[::-1]
il y a (de façon interne) une substitution du genre de celle que tu
indiques :
a[-1:-(len(a)+1):-1]
qui permet de parcourir la chaine intégralement
Merci d'avoir pris a peine de me donner une réponse à une question pas
variment essentielle mais qui me "turlupinait" depsui que j'étais tombé
sur la diabolique expression :
a[::-1]
philippe
In article <438441d6$0$4376$7a628cd7@news.club-internet.fr>, Richard
Delorme <abulmo@nospam.fr> wrote:
Merci de ta réponse mais
ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre
les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes
mais j'aimerais comprendre :-)
or
si je tape
a[::-1] retour toute la chaine inversée
a[:0:-1] dito sauf premier caractère
donc logiquement j'essaye
a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne
correspond à rien dan sla chaine, mais pour moi le pb ne fait que de
s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère
et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et
-len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le
dernier élément jusqu'au dernier élément exclus, donc une liste vide.
a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au
premier exclus, donc n'affiche pas le premier élément.
En fait, la liste entière inversée peut-être obtenue avec :
a[-1:-len(a)-1:-1]
Merci pour cette explication, en fait il ne faut pas oublier qu'en indice négatif on fonctionne "en marche arrière" Donc on peut supposer que qd on écrit a[::-1] il y a (de façon interne) une substitution du genre de celle que tu indiques : a[-1:-(len(a)+1):-1] qui permet de parcourir la chaine intégralement Merci d'avoir pris a peine de me donner une réponse à une question pas variment essentielle mais qui me "turlupinait" depsui que j'étais tombé sur la diabolique expression : a[::-1] philippe
In article <438441d6$0$4376$, Richard Delorme wrote:
Merci de ta réponse mais ce n'était pas la question !-)
la question qu'est ce que je peux mettre en position CENTRALE (entre les deux ::) qui donne le même résultat que si je ne mets rien
tu me dire <<question inutile puisque qu'avec a[::-1] ça marche, certes mais j'aimerais comprendre :-)
or si je tape a[::-1] retour toute la chaine inversée a[:0:-1] dito sauf premier caractère donc logiquement j'essaye a[:-1:-1] et là chaine vide
tu peux me dire <<normal tu tapes un indice de départ négatif qui ne correspond à rien dan sla chaine, mais pour moi le pb ne fait que de s'obscurcir car
avec 0 le slicing s'arrête sur l'avant dernier caractère et avec -1 plus rien
En indice, -1 désigne le dernier élément, -2 l'avant dernier, ... et -len(a) le premier élément. Ainsi a[:-1:-1], crée la liste depuis le dernier élément jusqu'au dernier élément exclus, donc une liste vide. a[:0:-1] crée une liste de tous les éléments depuis le dernier jusqu'au premier exclus, donc n'affiche pas le premier élément. En fait, la liste entière inversée peut-être obtenue avec : a[-1:-len(a)-1:-1]