Manipulation de liste

Étiqueté : 

Vous lisez 2 fils de discussion
  • Auteur
    Messages
    • #7549
      Hilaire Fernandes
      Participant
      Up
      0
      Down
      ::

      Hello,

      Comment enlever une valeur d’une liste ? J’ai pas trouvé.

      Je souhaite générer une liste de valeur (vu makelist), y ôter une ou plusieurs valeur (pas trouvé) puis tirer au hasard une valeur dans la liste résultante (cela devrait être jouable).

      Pas vu d’explication claire sur les opérations possibles sur les listes.

      Par exemple,

      x: valeur au hasard

      y liste de 1 à 100, sans la valeur de x

      Merci !

    • #7550
      Hilaire Fernandes
      Participant
      Up
      0
      Down
      ::

      Je me réponds. J’ai trouvé ça:

      [code]

      \text{ list = wims(makelist x for x = 2 to 5) }
      \text { list = wims(listcomplement \ya in \list) }
      \integer{ val = randitem(\list) }

      [/code]

      Mais je trouve ça assez illisible pour un truc aussi basic, surtout que j’ai besoin de le faire plusieurs fois. Est-ce qu’il est possible de faire plus concis ?

      J’ai pas trouve de documentation sur la manipulation de liste.

    • #7553
      lemaire
      Participant
      Up
      1
      Down
      ::

      Avec la commande wims listcomplement, si la liste initiale comporte plusieurs fois le même objet, la liste finale contiendra chaque objet une seule fois.

      Voici une autre façon de faire pas plus courte que la votre qui permet d’enlever l’item se trouvant à une place fixée. Elle utilise que \list[3] permet de récupérer le 3-ième item d’une liste et la concaténation 2 listes. Lorsqu’on concatène 2 listes si une des listes est vide, il y aura une virgule de trop, d’où la dernière instruction pour enlever les items vides.

      \text{ list1 = wims(makelist x for x = 2 to 5) }

      \integer{nb=items(\list1)}

      \integer{c=randint(1..\nb)}

      \text{list2= \list1[1..(\c-1)],\list1[(\c+1)..-1]}

      \text{list2=wims(nonempty item \list2)}

      \statement{liste initiale : \list1 et liste sans le \c-ieme item : \list2 }

      NB : si votre but est de pouvoir tirer au hasard des items tous différents dans une liste d’objets, il y a la slib data/random.

      • Cette réponse a été modifiée le il y a 1 année et 5 mois par bernadette.
Vous lisez 2 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.