python实现字符串的全排列的简单介绍

发布时间:2022-11-09

本文目录一览:

  1. python全排列代码,求解释
  2. 求教高手用python写一个字符串的所有排列组合
  3. python实现字符串列表排序?

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']