import reimport randomdef random_combination(s): pattern = re.compile(r'\((.*?)\)') while True: match = pattern.search(s) if not match: break sub_str = match.group(1) choices = sub_str.split('|') choices = [c for c in choices if c] # 去除空字符串 if not choices: return '' s = s[:match.start()] + random.choice(choices) + s[match.end():] return ss = '(a|b)c(d|e|f)(g|h)'result = random_combination(s)print(result)——如何把每次不同的结果保存?
时间: 2024-04-28 16:22:10 浏览: 82
你可以将每次生成的结果存储在一个列表中,然后在生成结果后将其添加到列表中。可以按照以下方式修改代码:
import re
import random
def random_combination(s, results):
pattern = re.compile(r'\((.*?)\)')
while True:
match = pattern.search(s)
if not match:
break
sub_str = match.group(1)
choices = sub_str.split('|')
choices = [c for c in choices if c]
if not choices:
return ''
s = s[:match.start()] + random.choice(choices) + s[match.end():]
results.append(s)
s = '(a|b)c(d|e|f)(g|h)'
results = []
random_combination(s, results)
print(results) # 输出:['acdg']
在上述代码中,我们添加了一个名为`results`的参数,用于保存生成的结果。在函数内部,我们使用`results.append(s)`将结果添加到列表中。现在,每次调用`random_combination()`函数时,生成的结果都会被添加到`results`列表中。
阅读全文