使用功能组合

时间:2018-11-22 06:25:43

标签: function

我在这里遇到问题。问题是,假设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 :(得分:0)

您可以简单地在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