la création d'une méthode inverse pour une liste python à partir de zéro
Je veux créer une méthode inverse pour une liste. Je sais qu'il y a déjà une méthode de ce type construit en python, mais je veux l'essayer à partir de zéro. Voici ce que j'ai et il semble avoir du sens pour moi, mais elle retourne la liste dans le même ordre. Ma compréhension est que les listes sont mutables et je pouvais juste réaffecter les valeurs dans la boucle.
def reverse(data_list):
length = len(data_list)
s = length
for item in data_list:
s = s - 1
data_list[s] = item
return data_list
OriginalL'auteur | 2011-03-09
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la modification de la liste que vous itérer sur elle (data_list) parce qu'il ne fonctionne pas , essayez comme ceci:
[None]*length
permettra de créer une liste de ce genre [None, None ...] longueur de temps, et denew_list = []
ne fonctionnera pas parce que ce créer une liste d'élément 0 de sorte lorsque vous essayez de fairenew_lits[1] = ..
il donnera un indice d'erreur car il n'y a pas d'indice 1 dans la liste, essentiellementnew_lits[1] = ..
modifier la valeur de l'indice de l'un avec la nouvelle valeur, il n'ajoutez pas. espérons que ce sens 🙂Ce n'est pas faute de "parce que vous êtes la modification de la liste que vous itérer sur"; c'est seulement un problème si vous ajoutez ou supprimez des éléments de la liste. C'est défaillante car chaque swap fonctionne sur deux lieux (ce de l'élément et de sa jumelle) donc, le temps que vous traitez l'ensemble de la liste, vous avez opéré sur chaque élément deux fois - en échange, puis échange de revenir en arrière. De sorte que chaque élément se termine là où il a commencé.
OriginalL'auteur mouad
OriginalL'auteur BlueRaja - Danny Pflughoeft
Par le temps que vous êtes à mi-chemin par le biais de la liste, vous avez échangé tous les éléments; comme vous continuez à travers la seconde moitié, vous échangez-les à leur emplacement d'origine à nouveau.
Au lieu d'essayer
Cela peut être utilisé de deux façons:
OriginalL'auteur Hugh Bothwell
un moyen facile en python (sans l'aide de la fonction reverse) est à l'aide de [] l'opérateur d'accès avec des valeurs négatives telles que (impression et de créer une nouvelle liste dans l'ordre inverse):
la fonction serait:
OriginalL'auteur tiagoboldt
Je n'obtiens pas la même liste lorsque j'essaie d'exécuter votre code. Mais j'ai aussi ne pas l'inversion de la liste parce que la liste est de passer à travers la liste de l'état qui est en train de changer à partir de l'extrémité arrière. Je pense que la façon dont vous êtes à la recherche de le faire est:
ici, nous avons fait marche arrière dans la moitié de la itérations et nous memoize la valeur de l'indice, nous sommes en train de changer ainsi, nous pouvons définir le "renversement" de la même étape.
OriginalL'auteur Gabriel
Qui va inverser une chaîne de caractères de longueur inconnue appelée (word) et de l'appeler (word_reversed).
Je suis à l'aide de vérifier pour voir si un mot est un palindrome et je ne suis pas autorisé à l'utiliser .inverse ou le mot[::-1].
OriginalL'auteur Tyler G
Quelque chose comme cela devrait fonctionner:
OriginalL'auteur Dolan Antenucci
Il y a deux façons de le faire
Pythonic Swap:
ou
XOR application:
OriginalL'auteur Gagan
Lorsque vous fournir une réponse sous la forme d'un fragment de code, vous aussi, idéalement, devrait expliquer dans le texte (ou au moins dans les commentaires dans le code) comment le fragment de code résout les OPs problème. Aussi, il peut être vaut la peine d'expliquer pourquoi votre fragment de code utilise entier tableaux où, comme l'OP demande une solution pour une liste générale. Il est probable que votre pour la boucle serait travailler pour une liste générale - mais il n'est pas clair pourquoi vous avez fait le choix que vous avez fait.
OriginalL'auteur prakx
Ne cherche pas à créer une nouvelle liste de tenir votre "temp" de données?
Sa simple si vous regardez le schéma:
Cela signifie que la position
0 -> n
,1 -> (n - 1)
,2 -> (n - 2)
. Ce qui signifie que vous pouvez apparaître le dernier élément et de le mettre dans l'index en cours...OriginalL'auteur kanarelo