【发布时间】:2017-12-14 14:01:20
【问题描述】:
我想避免在字符串列表中的所有可能组合中出现冗余(例如,1122 在我的上下文中与 2211 相同,因此结果列表中应该只有一个或另一个)。
我还想在组合过程中应用过滤器。例如,我不想在结果中包含任何包含3 的字符串。
我应该如何处理这个逻辑?
这段代码在做组合
>>> keywords = [''.join(i) for i in itertools.product(['11', '22', '33'], repeat = 2)]
>>> keywords
['1111', '1122', '1133', '2211', '2222', '2233', '3311', '3322', '3333']
【问题讨论】:
-
是否也应该跳过
2222和3333? -
也许循环并对每个字符串进行排序,如果排序后的字符串在新列表中不存在,则添加原始字符串:stackoverflow.com/questions/15046242/… 如果这看起来是您想要的正确方向,我可以写一个更好的答案去吧。
-
应删除任何包含 3 的字符串
-
如果你不想在输出中出现 3,你应该从 input 到
product中过滤掉这些字符串。 -
repeat总是 2 吗?
标签: python algorithm itertools