Fonction décalage
Fermé
Lou
-
Modifié le 2 mai 2020 à 18:03
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 9 mai 2020 à 01:53
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 9 mai 2020 à 01:53
A voir également:
- Fonction décalage
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
9 réponses
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
2 mai 2020 à 21:51
2 mai 2020 à 21:51
Bonsoir,
La fonction
La fonction
appendne retourne rien, elle fait simplement une modification de la liste. Voilà pourquoi tu n'as rien en sortie.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
4 mai 2020 à 16:26
4 mai 2020 à 16:26
Bonjour Lou,
pourquoi ne pas créer une 2eme liste ?
pourquoi ne pas créer une 2eme liste ?
L2 = [L[k] for k in range(len(L)-1,-1, -1)]
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
4 mai 2020 à 19:08
4 mai 2020 à 19:08
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.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
4 mai 2020 à 19:14
4 mai 2020 à 19:14
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
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
4 mai 2020 à 19:27
4 mai 2020 à 19:27
Ça arrive, même aux meilleurs ! :-)
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
4 mai 2020 à 20:48
4 mai 2020 à 20:48
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)
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
>
Lou
4 mai 2020 à 23:02
4 mai 2020 à 23:02
Bonsoir Lou,
que veux-tu en sortie ? ta liste modifiée ? tu peux donc faire un
que veux-tu en sortie ? ta liste modifiée ? tu peux donc faire un
returnde cette liste après que tu l'as modifiée.
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
Modifié le 5 mai 2020 à 08:24
Modifié le 5 mai 2020 à 08:24
pourquoi pas
L2= [L[k] for k in range(len(L))] L2.append(L2.pop(0)), qui évite de modifier la liste de départ?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
5 mai 2020 à 09:17
5 mai 2020 à 09:17
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)
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
5 mai 2020 à 09:53
5 mai 2020 à 09:53
c'est souvent une source de confusion d'utiliser les mêmes noms de variable dans et hors les fonctions.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
5 mai 2020 à 11:29
5 mai 2020 à 11:29
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']
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
9 mai 2020 à 01:53
9 mai 2020 à 01:53
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
3 mai 2020 à 09:12
3 mai 2020 à 10:02
3 mai 2020 à 10:05
quelle liste voudrais-tu en sortie?