Функция перемешивания для списка в списке - PullRequest
2 голосов
/ 30 июня 2019

Попытка добавить два списка и перемешать элементы обоих списков одновременно с помощью одной функции перечисления

Я использую две функции:

  1. Добавление списка_b к списку_а
  2. Перемешивание list_a и предоставление с помощью функции enumerate для индексации.

Кроме того, я также хочу перетасовать элементы list_b в новом перетасованном list_a и использовать одну и ту же функцию перечисления для индексирования элементов обоих списков в одной и той же последовательности чисел.Ниже я стою так далеко.List_a = ["alpha", "beta", "romeo", "nano", "charlie"] list_b = [1,2,3,4,5,6,7] из случайного импорта в случайном порядке list_a.append (list_b)shuffle (list_a) print (list_a)

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

Выход

['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

Ответы [ 3 ]

2 голосов
/ 30 июня 2019

Возможно, я что-то упускаю, но вы можете просто перемешать list_b, прежде чем добавить его к list_a:

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)

Выходы

['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
0 голосов
/ 30 июня 2019

Вы можете легко получить свой результат с помощью базового метода if-else И type. Я добавил 2 строки в ваш код: -

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)

Надеюсь, это поможет вам.

0 голосов
/ 30 июня 2019

Попробуйте это:

# 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...