Рандомизация itertools.combinations

#python #random #combinations #itertools

#python #Случайный #комбинации #python-itertools

Вопрос:

У меня есть список, l1 в котором я сгенерировал все комбинации длиной 2 с помощью itertools.combinations. Я намерен перебирать эти комбинации и выполнять с ними операцию. Для простоты этот код просто печатает комбинацию a .

 import itertools

l1 = [1,2,3,4,5]
for a in itertools.combinations(l1,2):
    print(a)
  

Есть ли какой-либо способ рандомизировать порядок, в котором комбинации повторяются? random.shuffle похоже, что это не работает, поскольку itertools.combinations не имеет длины.

Комментарии:

1. Смотрите также more_itertools.random_combination

Ответ №1:

Почему бы не сохранить комбинации как переменную, а затем перемешать?:

 import itertools
import random

l1 = [1,2,3,4,5]
combs = list(itertools.combinations(l1,2))
random.shuffle(combs)
for a in combs:
    print(a)
  

Комментарии:

1. Это будет работать, но только для достаточно небольших комбинаций, которые могут быть преобразованы в списки.