python解決排列組合


笛卡爾積:itertools.product(*iterables[, repeat])

import itertools
for i in itertools.product('BCDEF', repeat = 2):
    print(''.join(i),end=",")
print('\n')

# 輸出 BB BC BD BE BF CB CC CD CE CF DB DC DD DE DF EB EC ED EE EF FB FC FD FE FF

  兩個元組進行笛卡爾積:

import itertools
a = (1, 2)
b = ('A', 'B', 'C')
c = itertools.product(a,b)
for i in c:
    print(i,end=",")

# 輸出(1, 'A') (1, 'B') (1, 'C') (2, 'A') (2, 'B') (2, 'C')

 

排列:itertools.permutations(iterable[, r])

import itertools
for i in itertools.permutations('BCD', 2):
    print(''.join(i),end=",")
# 輸出 BC BD CB CD DB DC
print('\n')

組合:itertools.combinations(iterable, r)

import itertools
for i in itertools.combinations('BCDEF', 2):
    print(''.join(i),end=" ")
# 輸出 BC BD BE BF CD CE CF DE DF EF
print('\n')

組合(包含自身重復):itertools.combinations_with_replacement(iterable, r)

import itertools
for i in itertools.combinations_with_replacement('ABC', 3):
    print (''.join(i),end=' ')

# 輸出 AAA AAB AAC ABB ABC ACC BBB BBC BCC CCC
print('\n')

 

舉例

'BCDEF五個字母組合問題'
import itertools

print("1個組合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 1))):
    print("序號:%s   值:%s" % (i + 1, ''.join(val)))
print("2個組合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 2))):
    print("序號:%s   值:%s" % (i + 1, ''.join(val)))
print("3個組合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 3))):
    print("序號:%s   值:%s" % (i + 1, ''.join(val)))
print("4個組合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 4))):
    print("序號:%s   值:%s" % (i + 1, ''.join(val)))
print("5個組合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 5))):
    print("序號:%s   值:%s" % (i + 1, ''.join(val)))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM