例:
[1,2]的全排列是:[1,2],[2,1]。
[3,4]的全排列是:[3,4],[4,3]。.
配对后是:[([1,2],[3,4]),([2,1],[4,3])]
有答案:
a=[1,3,4]
b=[3,9,12]
def permutations(s,nums,p,q): #这个函数用来对nums进行全排列,放进s里
if p==q:
s.append(list(nums))
else:
for i in range(p,q): #这个循环是关键
nums[i],nums[p]=nums[p],nums[i]
permutations(s,nums,p+1,q) #p+1是易错点
nums[i],nums[p]=nums[p],nums[i] #这步也不能没有
if __name__=='__main__':
all_a=[]
permutations(all_a,a,0,len(a))
all_b=[]
permutations(all_b,b,0,len(b))
z=list(zip(all_a,all_b))
print(z)
不是很懂
配对的函数不用管,直接记就行list(zip(a,b))
关键是全排列的函数permutation(s,nums,p,q),也就是permutation(all_a,a,0,3)
1、p是怎样从初始值0变成3造成p==q然后增加列表到s里的?
2、这里面的for循环是怎样操作的。尤其是循环嵌套