IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Parcourir List de List


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut Parcourir List de List
    Bonjour,

    Comment dois je faire pour atteindre un élément de ma liste de liste..

    En effet, je tente avec une boucle

    for each element as list(of string) in resultat

    next

    mais je ne peux atteindre mon élément qui se trouve dans la seconde liste.. Techniquement, il serait dans Eelement.Items(0).Items(0)..

    Merci pour votre aide

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Théoriquement... non

    Car element représente toutes tes liste de niveau 1

    Donc element.Item(n) représente le nième élément de chaque liste de niveau 2.

    Comprends tu ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut
    ok... donc pour l'atteindre c'est tt simplement .. element.item(i)

    Peut on aller au dessus de deux listes?

    En tt cas merci

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Et bien oui j'imagine... si tu double imbrique des For Each derrière...

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut
    C'est assez bizarre, il semble que quand je sors de la bouvle, ma liste ne retient que les élements du premier niveau et perds les élements du second niveau, à quoi cela peut il être dû?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    ???

    je suis pas sure d'avoir compris ou tu veux en venir...

    quoi qu'il en soit techniquement parlant tu peux imbriquer autant de liste que tu veux, et si il te prenait l'envie d'avoir un niveau d'imbrication de 10 c'est toi que cela regarde, mais, je ne saurais que te le déconseiller.

    En effet, ce n'est pas parce que c'est techniquement faisable qu'il faut pour autant se jeter dessus comme une puce sur un chien.

    Les algorithmes de recherche/ajout/suppression sur ce type de structures sont lents, très lents. Nativement sur une "liste" on est en O(n)
    plus tu augmente le niveau d'imbrication plus tu augmente le facteur de complexité, et donc une liste de niveau 2 est donc en O(n²)...
    tu l'auras compris un niveau trois, c'est O(n^3)...

    sur une liste de 10 éléments sur 10... cela peut encore aller, mais maintenant imagine que chacune des listes ne contiennent 1000 éléments, et rien que pour un niveau 2 tu te retrouve en moyenne à 1000 * 1000 = 1 000 000 d'opérations atomiques.
    Certes ce n'est rien à l'heure actuelle, mais imagine avec un niveau d'imbrication supplémentaire et on passe à 1 000 000 000 d'opérations atomiques, en moyenne pour rechercher une valeur, ce qui commence sensiblement à se sentir même sur les machines actuelles.

    et oui augmenter l'imbrication ne consiste pas à doubler la durée de recherche, mais à l'élever au carré.

    Attention également quand tu manipule des listes...
    certains méthodes d'extensions Linq sur les listes/IEnumerable(Of T) ont la fâcheuse tendance d'aplanir l'énumération résultante (en d'autres termes si t'avais une liste de 10*10, donc un tableau en 2 dimensions, tu te retrouve avec une liste de 100 éléments, donc un tableau en 1 dimension) mais rien ne garantie que les éléments sont stockés dans le bon ordre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Dim metalist = New List(Of List(Of Integer))
     
    For n = 0 to 10
     metalist(n) = New List(Of Integer)
    Next
     
    ' ici je fait ce que j'ai à faire et je rempli mon tableau en 2 dimensions
    '
    '
     
    ' ici je vais parcourir la liste pour y trouver des éléments
    For Each n In metalist
     ' obtient le premier élément de chacune des sous listes
     Dim elt = n(0)
    Next
     
    ' la boucle précédente se contente d'être une lecture/parcours, par conséquent, elle n'altère pas metalist et ses sous listes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  2. Parcourir une liste de listes chaînées
    Par skystef dans le forum C++
    Réponses: 1
    Dernier message: 26/11/2007, 18h42
  3. parcourir une pile (liste simple chaînée)
    Par rutabagas dans le forum C
    Réponses: 3
    Dernier message: 04/10/2007, 16h08
  4. acceder au n iéme element d'une liste std::list
    Par sorari dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/03/2005, 15h21
  5. [langage] tri avancé, liste de listes
    Par schnecke dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2004, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo