CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Récursivité

[Flammer]
[Flammer]
Niveau 10
05 janvier 2019 à 17:32:50

Yo tout le monde, j'ai besoin d'aide, j'arrive pas à utiliser la récursivité.

Je dois par exemple créer une fonction flatten pour transformer une liste comme ça : [1,[2,3],4,[5,[6,7]],8] en une liste comme ça : [1,2,3,4,5,6,7,8], en utilisant la récursivité et je n'ai aucune idée de comment faire.

Merci de votre aide.

Message édité le 05 janvier 2019 à 17:37:07 par [Flammer]
godrik
godrik
Niveau 30
05 janvier 2019 à 18:35:56

tu sais creer une copie d'une liste simple?
bah tu fais pareil sauf que si l'element que tu as est une liste et pas un element simple, tu appelles flatten pour construire la liste.

Pseudo supprimé
Pseudo supprimé 05 janvier 2019 à 22:29:54

l2 = []
for el in l: #l est la liste de départ
--if type(el) == list:
----l2.extend(el)
----continue
l2.append(el)

[Flammer]
[Flammer]
Niveau 10
06 janvier 2019 à 10:41:23

Le 05 janvier 2019 à 22:29:54 Gros_rag a écrit :
l2 = []
for el in l: #l est la liste de départ
--if type(el) == list:
----l2.extend(el)
----continue
l2.append(el)

ça n'utilise pas la récursivité

[Black_Spirit]
[Black_Spirit]
Niveau 19
06 janvier 2019 à 11:03:14

Je sais comment faire et je veux bien aider mais on va pas juste te donner la solution, ça sert à rien si tu sais pas le faire seul, surtout si c'est un devoir scolaire.

T'as tester des trucs ?

Message édité le 06 janvier 2019 à 11:05:59 par [Black_Spirit]
Pseudo supprimé
Pseudo supprimé 06 janvier 2019 à 16:09:19

Le 06 janvier 2019 à 10:41:23 [Flammer] a écrit :

Le 05 janvier 2019 à 22:29:54 Gros_rag a écrit :
l2 = []
for el in l: #l est la liste de départ
--if type(el) == list:
----l2.extend(el)
----continue
l2.append(el)

ça n'utilise pas la récursivité

def flatten(l) :
    l2 = [] 
    for el in l:
        if type(el) == list:
            l2.extend(flatten(el)) 
            continue
        l2.append(el)
    return l2

Cette fonction est récursif :)
De rien :)

Pseudo supprimé
Pseudo supprimé 06 janvier 2019 à 16:09:38

Oups j'ai donné la solution :)

[Black_Spirit]
[Black_Spirit]
Niveau 19
06 janvier 2019 à 18:53:58

Sinon t'as ça mais c'est pareil


def flatten(input): 
    if type(input) is not list:
        return [input]

    l = []
    for elt in input:
        l += flatten(elt)
    return l

Je trouve juste ça plus simple à lire x)

Grimmys
Grimmys
Niveau 19
06 janvier 2019 à 21:36:06

La version de Black_Spirit est plus simple à lire en effet. :hap:

Mais bon c'est dommage, godrik avait donné suffisamment d'informations pour réaliser le travail... :(

[Flammer]
[Flammer]
Niveau 10
06 janvier 2019 à 23:00:35

Le 06 janvier 2019 à 16:09:19 Gros_rag a écrit :

Le 06 janvier 2019 à 10:41:23 [Flammer] a écrit :

Le 05 janvier 2019 à 22:29:54 Gros_rag a écrit :
l2 = []
for el in l: #l est la liste de départ
--if type(el) == list:
----l2.extend(el)
----continue
l2.append(el)

ça n'utilise pas la récursivité

def flatten(l) :
    l2 = [] 
    for el in l:
        if type(el) == list:
            l2.extend(flatten(el)) 
            continue
        l2.append(el)
    return l2

Cette fonction est récursif :)
De rien :)

J'étais presque arrivé à ça :hap:

Le 06 janvier 2019 à 18:53:58 [Black_Spirit] a écrit :
Sinon t'as ça mais c'est pareil


def flatten(input): 
    if type(input) is not list:
        return [input]

    l = []
    for elt in input:
        l += flatten(elt)
    return l

Je trouve juste ça plus simple à lire x)

Oui c'est plus simple, merci les gars

MrInnerPeace
MrInnerPeace
Niveau 10
09 janvier 2019 à 16:12:29

Pour comprendre la récursivité, il faut comprendre la récursivité.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment