Use python built-in library to solve permutation and combination problems

Cartesian product: itertools.product(*iterables[, repeat])

1

2

3

4

5

6

import itertools

for 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

  The Cartesian product of two tuples:

1

2

3

4

5

6

7

8

import itertools

= (12)

= ('A''B''C')

= itertools.product(a,b)

for in c:

    print(i,end=",")

 

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

 

 

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

1

2

3

4

5

import itertools

for in itertools.permutations('BCD'2):

    print(''.join(i),end=",")

# 输出 BC BD CB CD DB DC

print('\n')

 

组合:itertools.combinations(iterable, r)

1

2

3

4

5

import itertools

for in itertools.combinations('BCDEF'2):

    print(''.join(i),end=" ")

# 输出 BC BD BE BF CD CE CF DE DF EF

print('\n')

 

Combination (including self-repetition): itertools.combinations_with_replacement(iterable, r)

1

2

3

4

5

6

import itertools

for in itertools.combinations_with_replacement('ABC'3):

    print (''.join(i),end=' ')

 

# 输出 AAA AAB AAC ABB ABC ACC BBB BBC BCC CCC

print('\n')

For example

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

'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)))

 

Guess you like

Origin blog.csdn.net/mid_Faker/article/details/114182273
Recommended