如何修改Python全排列代码,仅输出元素集合唯一的单个排列?
嘿,这个需求其实超简单的,咱们来一步步调整你的代码:
方法1:直接输出原数组(最省事)
如果你想要的就是[1,2,3,4,5,6]这个排列,那完全没必要生成所有全排列,直接打印原数组就行:
import os import sys numbers = [1,2,3,4,5,6] print(numbers)
方法2:基于你原代码的修改
要是你想保留原有的生成逻辑(虽然有点冗余,但符合你的代码结构),只需要把最后循环打印所有排列的部分,改成只打印第一个元素就好:
import os import sys numbers=[1,2,3,4,5,6] x=[] for i1 in numbers: for i2 in numbers: for i3 in numbers: for i4 in numbers: for i5 in numbers: for i6 in numbers: if i1 not in (i2,i3,i4,i5,i6) and i2 not in (i1,i3,i4,i5,i6) and i3 not in (i1,i2,i4,i5,i6) and i4 not in (i1,i2,i3,i5,i6) and i5 not in (i1,i2,i3,i4,i6) and i6 not in (i1,i2,i3,i4,i5): x.append([i1,i2,i3,i4,i5,i6]) # 只打印第一个生成的排列 print(x[0])
额外推荐:用标准库更高效实现
其实Python的标准库itertools里有现成的permutations函数专门生成全排列,如果你只是要其中一个,代码会简洁很多:
import itertools numbers = [1,2,3,4,5,6] # 取第一个排列并转换成列表格式 first_perm = list(itertools.permutations(numbers))[0] print(first_perm)
内容的提问来源于stack exchange,提问作者Altay Karakalpaklı
相关产品推荐
相关产品推荐

