python中的有序排列
您好,我正在尝试使用字符串参数创建函数并返回有序排列dict。 例如: 单词='abc'; func(word)->[a,b,c,ab,ac,bc,abc]按字典顺序返回 糟糕的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一样是错误的,因为它不会按字典顺序返回所有结果。我认为您指的是一个组合。 排列是元素中的不同顺序非常重要的组
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)