我需要创建一个所有排列的列表,但不包括那些符号变化相同的排列.
例如,从序列
[-2, -1, 1, 2]
Run Code Online (Sandbox Code Playgroud)
我会得到这样的所有排列:
[-2, -1], [-2, 1], [-1, -2], [-1, 2], [1, -2], [1, 2], [2, -1], [2, 1]
Run Code Online (Sandbox Code Playgroud)
目前我使用以下代码:
permutation_items = []
permutations = itertools.permutations(range_items, items)
permutation_item = list(permutations)
Run Code Online (Sandbox Code Playgroud)
例如range_items = [-2, -1, 1, 2]和items = 2
然后消除我使用的所有相反的重复
for element in permutation_items:
flag=0
for j in element:
if ((j in element) & ((j*-1) in element)):
flag = 1
break
if flag == 0:
all_solutions.append(element)
Run Code Online (Sandbox Code Playgroud)
我认为这不是最好的方法,因为首先我创建一个包含所有排列的列表然后我删除那些我不想要的,你能建议一个更好的方法吗?另外因为如果我需要创建一个包含10个或更多数字的排列列表,它就变得非常大......
你认为这些尺寸会有问题吗?
请注意:有了这些排列,我需要做进一步的操作(我需要找到给出所有可能的数字对的最小排列数),所以我认为我需要将它们存储在变量中,也因为在我的结尾处算法我需要将结果存储在一个文件中.
...好吧,你的回答非常好,我喜欢你的兴趣...现在,如果我使用我的变量'range_items'列出30个元素(正面和负面),代码使用的时间非常大,我想问你一个多线程的解决方案(所以我可以在具有许多内核的集群中加载代码)......是否可行?