本文目录一览:
python全排列代码,求解释
def perm(l):
# 定义自定义函数 函数名为perm 参数为l 当传入参数时 l等于该参数
if (len(l) == 1):
# if语句如果传入的参数l的长度小于等于1(也就是0)则运行下面代码 否则跳过该if
return [l]
# 返回列表[l] 此处为递归的终止
r = []
# 定义列表 并初始化r
for i in range(len(l)):
# for循环(c语言常这么说) 迭代 i的变化范围为0 到l(字母L)的长度-1
s = l[:i] + l[i+1:]
# 将l的前三项以及l的第i+1后的字串赋给s
p = perm(s)
# 递归 将s做perm的处理 递归请百度
for x in p:
# 迭代p列表
r.append(l[i:i+1] + x)
# 将l的第i项添加进r列表
return r
# 返回r列表
函数功能:将传入perm()
的字串、列表等参数进行全排列 并返回全排列后的列表
递归不是人的思考方式…
求教高手用python写一个字符串的所有排列组合
def combinations(iterable, r):
# combinations('ABCD', 2) -- AB AC AD BC BD CD
# combinations(range(4), 3) -- 012 013 023 123
pool = tuple(iterable)
n = len(pool)
if r > n:
return
indices = list(range(r))
yield tuple(pool[i] for i in indices)
while True:
for i in reversed(range(r)):
if indices[i] != i + n - r:
break
else:
return
indices[i] += 1
for j in range(i+1, r):
indices[j] = indices[j-1] + 1
yield tuple(pool[i] for i in indices)
python实现字符串列表排序?
a = ['b', 'a', 'c', 'ab', 'aa', 'aaa']
a.sort(key=lambda x: str(len(x)) + x)
print(a)
# ['a', 'b', 'c', 'aa', 'ab', 'aaa']