def possible_replaces(string, to_multipy_replace = 'XY'):
"""
Returns a list of strings where each member of `to_multipy_replace` is replaced
by each member of said set.
>>> list(possible_replaces('YXY00'))
['XXY00', 'YXY00', 'YXY00', 'YYY00', 'YXX00', 'YXY00', 'YXY00', 'YXY00']
>>> list(possible_replaces('XYY0'))
['XYY0', 'YYY0', 'XXY0', 'XYY0', 'XYX0', 'XYY0', 'XYY0']
"""
for index, char in enumerate(string):
if char in to_multipy_replace:
for replacement in to_multipy_replace:
yield replace_at_index(string, index, replacement)
else:
yield string
import itertools
def permutate(source, changeset):
count = sum(1 for char in source if char in changeset)
holder = ''.join('{}' if char in changeset else char for char in source)
for perm in set(itertools.permutations(changeset * count, count)):
print(holder.format(*perm))
permutate('XY000Y00', 'XY')
我重构了更多,现在可读性更强:
我还写了一个更一般的解决方案:
你现在不仅限于“XY”,而是任何你喜欢的字符集。你知道吗
可以使用
itertools.permutations()
获取字符串的排列。然后通过应用一些替换逻辑,您可以得到以下结果:结果:
相关问题 更多 >
编程相关推荐