塞进裤子ヾ(≧O≦)〃嗷~

0%

我的函数库

将一些常用函数记录下来,避免重复造轮子

全排列

两种方式,一种有放回的抽样,另一种是无放回抽样

比如【123】,第一种有27种结果,第二种有6种结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#permutation,

def Permutation(ss):
def helper(ss,resultlist,curpath="",index=0):
#ss:str 采样字符串
#resultlist:list,存储结果【【123】,【132】...】
#curpath:str,当前存储的排列结果(未完成的)
#index:int,已经进行了index位的采样
if index == length:#到了最后一个字符
resultlist.append(curpath)
else:
for i in range(len(ss)):
#有放回抽样
helper(ss,resultlist,curpath+ss[i],index+1)
#无放回抽样
#helper(ss[:i]+ss[i+1:],resultlist,curpath+ss[i],index+1)
#ss[:i]+ss[i+1:]是为例取出当前字符ss[i],因为是不放回采样
#path+ss[i]是将当前字符保留到curpath中
if not ss:
return []
resultlist = []
length = len(ss)
helper(ss,resultlist,curpath="",index=0)#list是可变对象,不必return
return list(set(resultlist))#set()去重

print(Permutation("123"))
if help:小手一抖点个广告 or 大手一挥资助一下