2
votes

Fonction de lecture aléatoire pour une liste dans une liste

Essayer d'ajouter deux listes et mélanger les éléments des deux listes simultanément avec une fonction d'énumération

J'utilise deux fonctions:

  1. Ajout de list_b à list_a
  2. Mélanger list_a et donner en utilisant la fonction enumerate pour faire l'indexation.

De plus, je souhaite également mélanger les éléments de list_b dans la nouvelle liste aléatoire_a et utiliser la même fonction d'énumération pour indexer les éléments des deux listes dans une même séquence de nombres. Voici où je me situe jusqu'ici.

['nano', 'charlie', 'alpha', 'beta', [1, 2, 3, 4, 5, 6, 7], 'romeo']

1 nano
2 charlie
3 alpha
4 beta
5 [1, 2, 3, 4, 5, 6, 7]
6 romeo

Sortie

list_a = ["alpha", "beta", "romeo", "nano", "charlie"]
list_b = [1,2,3,4,5,6,7]
from random import shuffle
list_a.append(list_b)
shuffle(list_a)
print(list_a)

for idx, val in enumerate(list_a, start=1):
    print(idx, val)


2 commentaires

Je ne suis pas sûr de comprendre à quoi vous vous attendez


Je m'attends à voir des éléments de list_b également être mélangés puis enrôlés dans l'ordre numérique. Résultat attendu à titre d'exemple >> [7,1,3,4,5,2,6] et ensuite énumérer la fonction doit montrer 1-nano 2-charlie 3-alpha 4-beta 5-7 6-1 7-3 et ainsi de suite. J'espère que cela clarifie


3 Réponses :


0
votes

Essayez ceci:

# append
from random import sample, shuffle
list_a.append(list_b)

# shuffle the list within the list
for i, v in enumerate(list_a): 
     if isinstance(v, list):
          list_a[i] = sample(v, len(v))

# shuffle the list
list_a = sample(list_a, len(list_a))

# unpack elements
list_c = []
for e in list_a:
    if not isinstance(e, list):
        list_c.append(e)
        continue
    for v in e: 
        list_c.append(v)

# print
for i, v in enumerate(list_c): 
    print(i, v)


1 commentaires

N'hésitez pas à voter et utilisez ma réponse comme réponse dédiée à votre question :)



2
votes

Il me manque peut-être quelque chose, mais vous pouvez simplement mélanger list_b avant de l'ajouter à list_a:

['alpha', 'charlie', 'nano', [1, 4, 5, 2, 7, 3, 6], 'beta', 'romeo']
1 alpha
2 charlie
3 nano
4 [1, 4, 5, 2, 7, 3, 6]
5 beta
6 romeo

Sorties p >

from random import shuffle

list_a = ["alpha", "beta", "romeo", "nano", "charlie"]
list_b = [1, 2, 3, 4, 5, 6, 7]

shuffle(list_b)

list_a.append(list_b)
shuffle(list_a)
print(list_a)

for idx, val in enumerate(list_a, start=1):
    print(idx, val)


0 commentaires

0
votes

Vous pouvez facilement obtenir votre résultat par la méthode du concept de base if-else ET type . J'ai ajouté 2 lignes dans votre code: -

list_a = ["alpha","beta","romeo","nano","charlie"]
list_b = [1,2,3,4,5,6,7]
from random import shuffle
list_a.append(list_b)
shuffle(list_a)
print(list_a)
print()

for idx, val in enumerate(list_a, start=1):
    if type(val) is list:   # This is newly added.
        shuffle(val)
        print(idx, val)
    else:   
        print(idx, val)

J'espère que cela pourra vous aider.


0 commentaires