-2
votes

Liste inverse en array python à l'aide de l'append Supprimer la méthode sans créer de fonction

J'essaie d'inverser une liste à l'aide de l'annexe et de la suppression de la méthode. Mais il y a un problème dans ma méthode de faire cette solution. Peut-être que quelqu'un me donne une meilleure explication

list_in_order = [1,2,3,4,5,6]
def reverse(list):
    r=[]
    for i in list:
        print (i)
        r.append(i)
        list_in_order.remove(i)
    return r

print(reverse(list_in_order))


3 commentaires

Ne retirez pas les éléments de la liste d'origine, construisez simplement une nouvelle. Vous supprimez des éléments de votre liste tout en itérant. Ça ne finit jamais bien.


En outre, ne nommez pas vos variables list .


Vous enfreignez une règle de programmation fondamentale - ne modifiez pas de tableau (liste) que vous êtes itération. De plus, vous êtes itérant sur la liste du début à la fin et d'inverser, vous devez aller dans l'autre sens.


4 Réponses :


0
votes
In [11]: list_in_order = [1,2,3,4,5,6]

In [12]: list(reversed(list_in_order))
Out[12]: [6, 5, 4, 3, 2, 1]

0 commentaires

1
votes

Vous ne pouvez pas utiliser list.append code>, comme cela ajoute à la fin de la liste. Ce que vous voulez, c'est ajouter au début de la liste. Pour cette utilisation list.insert code>. Pour plus de détails, voir le Liste Docs .

>>> [1,2,3,4,5,6][::-1]
[6, 5, 4, 3, 2, 1]


0 commentaires

0
votes

Voulez-vous [6, 5, 4, 3, 2, 1] pour le résultat? Si oui, il suffit d'utiliser list_in_order [:: - 1] code>

Si vous devez utiliser l'annexe et la suppression, P>

list_in_order = [1,2,3,4,5,6]

def reverse_list(target_list):
    copied_list = target_list.copy()
    r=[]
    for i in reversed(target_list):
        r.append(i)
        copied_list.remove(i)
    return r
  • Ne supprimez pas les éléments de la liste lors de la boucle. LI>
  • n'utilise pas 'liste' pour le nom de la variable / du paramètre. LI> ul> p>


0 commentaires

0
votes

Je le ferais comme ceci:

list_in_order = [1,2,3,4,5,6]
    def reverse(list):
        counter = len(list)
        for i in range(0,counter/2):
            print(i)
            list[i],list[counter-i] = list[counter-i], list[i]
        return list

print(reverse(list_in_order))


0 commentaires