python中的有序排列

python中的有序排列,python,permutation,Python,Permutation,您好,我正在尝试使用字符串参数创建函数并返回有序排列dict。 例如: 单词='abc'; func(word)->[a,b,c,ab,ac,bc,abc]按字典顺序返回 糟糕的 def word(w): for i in range(len(w)): yield from itertools.combinations(w,i+1) 电子数据交换: 这和powerset一样是错误的,因为它不会按字典顺序返回所有结果。我认为您指的是一个组合。 排列是元素中的不同顺序非常重要的组

您好,我正在尝试使用字符串参数创建函数并返回有序排列dict。 例如:

单词='abc'; func(word)->[a,b,c,ab,ac,bc,abc]

按字典顺序返回

糟糕的

def word(w):
   for i in range(len(w)):
      yield from itertools.combinations(w,i+1)
电子数据交换:


这和powerset一样是错误的,因为它不会按字典顺序返回所有结果。

我认为您指的是一个组合。 排列是元素中的不同顺序非常重要的组合。 如果'ab'的组合看起来像['a','b','ab'],则排列看起来像['a','b','ab','ba']

来自itertools导入组合的

单词='abc'
我的清单=[]
对于范围内的n(len(word)):
my_list.extend([''.join(x)表示x的组合(单词,n+1)])
打印(我的列表)
结果:

['a', 'b', 'c', 'ab', 'ac', 'bc', 'abc']
def toString(列表):
返回“”。加入(列表)


这就是所谓的。在itertools Recipies下查看为什么bc在abc之前?@ChrisCharley挑剔:没有空集的powerset。这是否回答了您的问题。或
def permute(a, l, r): 
if l==r: 
    print toString(a) 
else: 
    for i in xrange(l,r+1): 
        a[l], a[i] = a[i], a[l] 
        permute(a, l+1, r) 
        a[l], a[i] = a[i], a[l]
string = "ABC"
    n = len(string) 
    a = list(string) 
    permute(a, 0, n-1)