【发布时间】:2019-09-10 03:08:35
【问题描述】:
我有两个变量 i,j,它们显示两个集合 1 和 2 的长度,例如 len(one)=i 和 len(two)=j。现在,我想合并这两个集合,以使每个集合具有有序排列。我还需要在 Python 中为每个新集合建立索引。
例如: 一个包含前 i 个大写字母,两个包含小写字母
len(one) = i
len(two) = j
expected outputs = {'abABC...', 'aAbBC...', 'aABcC...', 'aABCb...',...}
我尝试了以下代码,但它不起作用。如果有人能提供帮助,我将不胜感激。
from functools import reduce
from itertools import combinations
def assign(v, p):
v[p[0]] = p[1]
return v
def interp(word1, word2, size):
return (''.join(reduce(assign, zip(comb1, word1), zip(comb2, word2)))
for comb1, comb2 in zip(combinations(range(size), len(word1)),
combinations(range(size), len(word2))))
print('\n'.join(interp("ABC", "ab", 5)))
【问题讨论】:
-
不要使用 reduce 来产生副作用:
reduce(assign -
集合在 Python 中是无序的,因此您无法按照预期输出的建议保留
ABC和ab的顺序。将您的输入更改为列表,然后您就会有一个有效的问题。