python 排列组合

本文详细介绍如何使用Python标准库itertools进行排列与组合操作,并提供自定义函数实现的示例代码。通过具体实例演示了不同方法的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.排列

1.1 使用itertools

from itertools import permutations
list(permutations(["a","b","c"]))

1.2 自定义函数

def perm(ls,begin,end):
    global res,count
    if begin==end-1:
        res.append(ls.copy())
        count+=1 
        return 
    else:
        for ind in range(begin,end):
            ls[begin],ls[ind]=ls[ind],ls[begin]
            perm(ls,begin+1,end)
            ls[begin],ls[ind]=ls[ind],ls[begin]
arr = ["a","b",'c']
res=[]
count=0
perm(arr, 0, len(arr))
print(res)    

2.组合

2.1 使用itertools

from itertools import combinations
list(combinations(["a","b","c","d"],2))

2.2 自定义函数

def combine(ls,sub,ind):
    global res,k
    if len(sub)==k:
        res.append(sub[:])
        return 
    for i in range(ind,len(ls)):
        sub.append(ls[i])
        combine(ls[ind:],sub,i+1)
        sub.pop()

arr=['a','b','c','d']
res=[]
k=2
combine(arr,[],0)

print(res)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外卖猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值