python排列和組合

1.排列

1.1給定字符串,返回它的全部組合,如‘abc’, 返回‘abc’,‘acb’,‘bac,‘bca’,’cab‘,’cba‘
import itertools
s = 'abc'
itertools.permutations(s,len(s))    # 是迭代器
list(itertools.permutations(s,len(s)))   # list一下
結果以下:
    [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]  #只要拼接成字符串便可
    
[''.join(i) for i in list(itertools.permutations(s,len(s)))]:
    #結果 ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']

2.補充知識

[''.join(i) for j in range(len(s)+1) for i in list(itertools.permutations(s,j))]
 # 有點像關聯子查詢的味道 
[i  for j in range(5) for i in range(j)]  
	# 先執行for j in range(5) 第一次 j = 0 把j給後面 就是 [i for i in range(0)] 爲 空
    # 第二次 j = 1   [i for i in range(1)]   此時  [0]
    #第三次 j = 2   [i for i in range(2)]   此時  [0,1]
    #第二次 j = 3   [i for i in range(3)]   此時  [0,1,2]
    #第二次 j = 4   [i for i in range(4)]   此時  [0,1,2,3]
    結果就是
    [0,0,1,0,1,2,0,1,2,3]

3.組合

3.1獲取全部組合abc,選兩個,一共有 ab,ac bc 這是組合python

import itertools
s = 'abc'
[i for i in list(itertools.combinations(s,2))]
[('a', 'b'), ('a', 'c'), ('b', 'c')]

4.combinations 和 permutations的區別

前者是組合,後者是排列(考慮前後順序)
相關文章
相關標籤/搜索