2017-08-30 2 views
2

En Python, je sais que je peux inverser les cordes fairePourquoi ne puis-je pas inverser les chaînes en passant de 0 à leur longueur par -1?

'dfdfsdf'[::-1] 

et essentiellement le rend pas en arrière. Cependant quand j'essaye de courir ceci cela ne fonctionnera pas

string = 'dfdfsdf' 
reversed = string[0:len(string):-1] 
print(reversed) 

Je me demandais juste que cela ne fonctionne pas; le format est [premier: dernier: pas], donc je pensais pouvoir le faire.

+8

Vous ne pouvez pas passer de zéro à un nombre positif en utilisant la valeur -1 -1 –

+1

@khelwood Cela ne fonctionnera pas. «-1» est toujours traité comme le dernier caractère (pas un nombre avant «0»), ce qui renvoie une chaîne vide. –

+0

@Surya qu'est-ce que vous essayez de faire avec inversé exactement? –

Répondre

1

Il ne fonctionne pas parce que l'itération dans la liste fonctionne comme ceci:

list[start_point:end_point:iteration] 

donc pour votre méthode, vous devez écrire:

reversed = string[len(string)-1:-len(string)-1:-1] 

expliqué plus en lien duper

ou vous pouvez créer une liste/chaîne réservée à l'aide de fonctions telles que:

reversed = "".join(reversed(string)) 
+1

Votre dernière ligne devrait indiquer pourquoi vous devriez éviter les noms intégrés en tant que noms de variables. Vous observez immédiatement la classe 'reversed', donc l'appel suivant échouera:' reverse = "" .join (reverse (string)) ' –

+0

Votre explication est fausse,' string [len (string): 0: -1] = = string [:: - 1] 'est' False', comme je l'ai commenté 'string [len (string) -1: -len (string) -1: -1]' voir le dupe –

+0

Si je fais ça alors pourquoi faire Je dois revenir en arrière par -1? Est-ce que je ne devrais pas utiliser 1 puisque c'est reculer de toute façon? – Surya