首页 > 解决方案 > 如何使 itertools.product() 随机

问题描述

我有下面的代码,它将打印“abc”的所有可能组合。有没有办法我只能打印部分组合,或者让它每次随机打印组合。

我的代码是:

from itertools import product
for item in product('abc', repeat=3):
  codes = (''.join(item))
  print(codes)

这段代码的结果给了我这个:

aaa
aab
aac
aba
abb
abc
.
.
.
bcc
caa
cca
ccb
ccc

我希望它的结果每次都是随机的,或者只打印这样的特定部分:

bcc
caa
cca
ccb
ccc

标签: python

解决方案


我可能会使用类似的东西:

from itertools import product
from random import choice

all_samples = ["".join(x) for x in product("abc", repeat=3)][0:10] # as requested on the comments, limits the list to the first 10 items.

def rand_sample():
    sample = choice(all_samples)
    all_samples.remove(sample)
    return sample

for _ in range(10):
    print(rand_sample())

cbc
caa
acb
bbc
abc
cac
aaa
ccb
aac
acc

演示


推荐阅读