我在这里遇到问题。问题是,假设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>
谢谢!!
答案 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