Fonction décalage
Lou
-
Furansujean Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
Furansujean Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois rédiger une fonction qui, à partir d'une liste L = [a,b,c], renvoie L = [b,c,a].
Voici le programme que j'ai rédigé :
Or, quand j'exécute ma fonction dans le Shell, elle ne renvoie rien ...
Merci de votre aide !
Je dois rédiger une fonction qui, à partir d'une liste L = [a,b,c], renvoie L = [b,c,a].
Voici le programme que j'ai rédigé :
def decalage(L) : return L.append(L.pop(0))
Or, quand j'exécute ma fonction dans le Shell, elle ne renvoie rien ...
Merci de votre aide !
Configuration: Macintosh / Safari 13.0.5
A voir également:
- Fonction décalage
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
9 réponses
Bonsoir,
La fonction
La fonction
appendne retourne rien, elle fait simplement une modification de la liste. Voilà pourquoi tu n'as rien en sortie.
Bonjour Phil_1857,
Ce ne me semble pas une bonne idée. Vous indiquez une inversion de liste, alors que Lou souhaite faire une permutation circulaire. Son idée de départ me parait d'ailleurs pertinente.
Ce ne me semble pas une bonne idée. Vous indiquez une inversion de liste, alors que Lou souhaite faire une permutation circulaire. Son idée de départ me parait d'ailleurs pertinente.
Bonjour Furansujean,
Mais oui, tu as raison, quel blaireau je fais ! J'ai lu trop vite !
Allez hop, copie à revoir ! :-)
Mais oui, tu as raison, quel blaireau je fais ! J'ai lu trop vite !
Allez hop, copie à revoir ! :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
On peut décomposer, alors:
Là, on obtient bien L = b,c,a
L = ['a','b','c'] s = L.pop(0) L.append(s)
Là, on obtient bien L = b,c,a
Mais à ce stade , si je convertis ce script en fonction , je vais avoir le même problème : à la sortie je ne vais rien avoir de renvoyé car la liste aura été modifiée en place ?
En fait j’ai besoin que cette fonction me renvoie une liste (car je l’utilise ensuite dans un autre programme plus conséquent)
En fait j’ai besoin que cette fonction me renvoie une liste (car je l’utilise ensuite dans un autre programme plus conséquent)
L = ['a','b','c'] def decalage(L): L2= [L[k] for k in range(len(L))] L2.append(L2.pop(0)) return(L2) L2 = decalage(L)
C'est vrai !
import copy def decalage(liste_a_decaler): ''' Renvoie une liste qui est la permutation circulaire de celle passée en argument ''' liste_decalee = copy.copy(liste_a_decaler) liste_decalee.append(liste_decalee.pop(0)) return(liste_decalee) L = ['a','b','c'] L2 = decalage(L) print(L2) #imprime ['b', 'c', 'a']
Bonsoir Lou,
La réponse de Phil_1857 répond-elle à ta question ? Si oui, je te propose de marquer le sujet comme "Résolu".
Remarques :
1. Si la liste
Pour une copie de liste on peut faire :
Il s'agit alors d'une "copie superficielle".
2. Je sors un peu du sujet, mais à noter : si la liste contient des sous-listes, du genre
La vidéo suivante explique très bien ce point : https://www.youtube.com/watch?v=I3dbeflpI-Q
La réponse de Phil_1857 répond-elle à ta question ? Si oui, je te propose de marquer le sujet comme "Résolu".
Remarques :
1. Si la liste
liste_a_decalerest plate (ce qui est le cas de l'exemple donné) c'est-à-dire qu'elle ne contient pas de sous-liste, alors on peut se passer du module
copyimporté.
Pour une copie de liste on peut faire :
liste_decalee = liste_a_decaler.copy()
Il s'agit alors d'une "copie superficielle".
2. Je sors un peu du sujet, mais à noter : si la liste contient des sous-listes, du genre
[['a',1],['b'],'c',0.5]alors il faut utiliser une "copie profonde" :
import copy #... liste_decalee = copy.deepcopy(liste_a_decaler)
La vidéo suivante explique très bien ce point : https://www.youtube.com/watch?v=I3dbeflpI-Q
quelle liste voudrais-tu en sortie?