web-dev-qa-db-fra.com

Quelle est la signification de "int (a [:: - 1])" en Python?

Je ne peux pas comprendre cela. J'ai vu cela dans le code des gens. Mais je ne peux pas comprendre ce qu'il fait. C'est en Python.

str(int(a[::-1]))
26
sofa_maniac

En supposant que a est une chaîne. La notation Slice dans python a la syntaxe -

list[<start>:<stop>:<step>]

Donc, quand vous faites a[::-1], il part de la fin, vers le premier, en prenant chaque élément. Il renverse donc a. Ceci s'applique également aux listes/tuples.

Exemple -

>>> a = '1232'
>>> a[::-1]
'2321'

Ensuite, vous le convertissez en int puis en chaîne (bien que vous ne sachiez pas pourquoi vous le faites), cela vous donne simplement la chaîne.

53
Anand S Kumar

La notation utilisée dans

a[::-1]

signifie que pour une chaîne/liste/Tuple donnée, vous pouvez découper ledit objet en utilisant le format

<object_name>[<start_index>, <stop_index>, <step>]

Cela signifie que l'objet va découper chaque index "pas" à partir de l'index de démarrage donné, jusqu'à l'index d'arrêt (à l'exclusion de l'index d'arrêt) et vous le retourner.

Dans le cas où l'index de démarrage ou l'index d'arrêt est manquant, il prend la valeur par défaut comme index de démarrage et index d'arrêt de la chaîne/liste/tuple donnée. Si l'étape est laissée en blanc, elle prend la valeur par défaut de 1, c'est-à-dire qu'elle passe par chaque index.

Alors,

a = '1234'
print a[::2]

imprimerait

13

Maintenant, l'indexation ici et le nombre de pas prennent en charge les nombres négatifs. Donc, si vous donnez un index -1, cela se traduit par len (a) -1 index. Et si vous donnez -x comme nombre de pas, alors il incrémenterait chaque xième valeur depuis l'index de départ, jusqu'à l'index d'arrêt dans le sens inverse. Par exemple

a = '1234'
print a[3:0:-1]

Cela reviendrait

432

Notez qu'il ne renvoie pas 4321 car l'index d'arrêt n'est pas inclus.

Maintenant dans votre cas,

str(int(a[::-1]))

inverserait simplement un entier donné, qui est stocké dans une chaîne, puis le reconvertir en chaîne

c'est-à-dire "1234" -> "4321" -> 4321 -> "4321"

Si ce que vous essayez de faire est simplement d'inverser la chaîne donnée, alors simplement un [:: - 1] fonctionnera.

12
Abhilash Panigrahi