Получение комбинации с использованием функции - PullRequest
0 голосов
/ 22 ноября 2018

У меня тут проблема.Вопрос в том, что при условии Z = 3 и Y = 4, как мне создать функцию, которая возвращает мне случайную комбинацию из zzzyyyy или zzyyyzy или любой перестановки?Я сделал код ниже, но я очень запутался.

def combinations(iterable,r):
   pool= tuple(iterable)
   n= len(pool)
   for indices in permutations(range(n), r):
       if sorted(indices)==listed(indices):
           yield tuple(pool[i] for i in indices)
       return

print(combinations('AAABBB', 4))

но я получил только

output: <generator object combinations at 0x103f81518>

Спасибо !!

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете просто использовать функцию permutations в itertools.Это сгенерирует все возможные перестановки данного списка (или строки).Затем используйте randrange в random, чтобы сгенерировать случайное число в диапазоне от 0 до длины списка, чтобы выбрать любой случайный элемент в списке.

from itertools import permutations
import random

def build_string(z_num, y_num):
    string = ''
    string += 'Z'*z_num
    string += 'Y'*y_num
    return string

string = build_string(3, 4)
perms = [''.join(p) for p in permutations('ZZZYYYY')]
print(perms[random.randrange(0, len(perms))]) # print random permutation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...