python奇淫怪巧(列表生成式实现排列组合)

注意:成员元素各不相同

组合

def combination(nums, k):
    ans = [[]]
    for i in range(k):
        ans = [pre + [sub]
               for pre in ans for sub in nums if i == 0 or sub > pre[-1]]
    return ans


nums = [7, 1, 2, 3, 4, 5, 6, 8]
n = 2
c = combination(nums, n)
print(c, len(c))

排列

def permutation(nums, k):
    ans = [[]]
    # 实现递归
    for i in range(k):
        ans = [pre + [sub] for pre in ans for sub in nums if sub not in pre]
    return ans


nums = [7, 1, 2, 3, 4, 5, 6, 8]
n = 2
c = permutation(nums, n)
print(c, len(c))

猜你喜欢

转载自blog.csdn.net/u012787710/article/details/99133013