Hướng dẫn python permutation without itertools - hoán vị python không có itertools

Itertools trong Python là một mô -đun tạo ra các trình lặp phức tạp với sự trợ giúp của các phương pháp hoạt động trên các trình lặp. Mô-đun này hoạt động như một công cụ nhanh, tiết kiệm bộ nhớ được sử dụng bởi chính nó hoặc kết hợp để tạo thành đại số lặp.

In kết hợp bằng cách sử dụng itertools

Sử dụng itertools, chúng tôi có thể hiển thị tất cả các kết hợp có thể của chuỗi theo một cách khá được tối ưu hóa. Để hiển thị kết hợp yêu cầu 2 tham số. Đầu tiên là chuỗi và thứ hai là độ dài của các chuỗi con cần thiết. Ví dụ sau đây làm cho tất cả các kết hợp cho chuỗi ‘ABC, sử dụng itertools. & Nbsp;

Example:  

Python3

from itertools import combinations

def n_length_combo(arr, n):

    ____10

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
1
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
2

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
3
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
4
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
7
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
8

    

[('a', 'b'), ('a', 'c'), ('b', 'c')]
0
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[('a', 'b'), ('a', 'c'), ('b', 'c')]
2

    

[('a', 'b'), ('a', 'c'), ('b', 'c')]
4
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[('a', 'b'), ('a', 'c'), ('b', 'c')]
6

    

[('a', 'b'), ('a', 'c'), ('b', 'c')]
8
[('a', 'b'), ('a', 'c'), ('b', 'c')]
9from0 from1from2 from3

Đầu ra

[('a', 'b'), ('a', 'c'), ('b', 'c')]

In kết hợp mà không sử dụng itertools

A. Sử dụng đệ quy

Để tạo các kết hợp mà không cần sử dụng iterTools, hãy lặp lại danh sách từng cái một và sửa phần tử đầu tiên của danh sách và tạo kết hợp với danh sách còn lại. Tương tự, lặp lại với tất cả các yếu tố danh sách từng cái một bằng cách đệ quy của danh sách còn lại.

Python3

def from5

    

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
3
[('a', 'b'), ('a', 'c'), ('b', 'c')]
4
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 itertools 1
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
8

itertools 3

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
0 itertools 5

    itertools 7

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5itertools 9

    from0 import2___

itertools 3combinations1

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 combinations3

itertools 3combinations5

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 combinations7combinations8 combinations9def0

itertools 3def2

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 def4def5combinations9def7

itertools 3from0 n_length_combo(arr, n):0from2 n_length_combo(arr, n):2

n_length_combo(arr, n):3n_length_combo(arr, n):4n_length_combo(arr, n):55____86

    ____10 n_length_combo(arr, n):9

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
3     1
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
7
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
8

    

[('a', 'b'), ('a', 'c'), ('b', 'c')]
0
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5    9

    

[('a', 'b'), ('a', 'c'), ('b', 'c')]
8
[('a', 'b'), ('a', 'c'), ('b', 'c')]
9from0 from1from2
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
06
[('a', 'b'), ('a', 'c'), ('b', 'c')]
6
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
08

Đầu ra

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]

In kết hợp mà không sử dụng itertools

A. Sử dụng đệ quy

Python3

Để tạo các kết hợp mà không cần sử dụng iterTools, hãy lặp lại danh sách từng cái một và sửa phần tử đầu tiên của danh sách và tạo kết hợp với danh sách còn lại. Tương tự, lặp lại với tất cả các yếu tố danh sách từng cái một bằng cách đệ quy của danh sách còn lại.

def from5

    

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
3
[('a', 'b'), ('a', 'c'), ('b', 'c')]
4
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 itertools 1
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
8

itertools 3

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
0 itertools 5

    from0 import2___

itertools 3

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
0

itertools 3combinations1

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 combinations3

itertools 3combinations5

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 combinations7combinations8 combinations9def0

itertools 3def2

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5 def4def5combinations9def7

itertools 3from0 n_length_combo(arr, n):0from2 n_length_combo(arr, n):2

n_length_combo(arr, n):3n_length_combo(arr, n):4n_length_combo(arr, n):55____86

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
61
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
62

itertools 3

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
64
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
8

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
52
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
0

    ____10 n_length_combo(arr, n):9

[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
3     1
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
5
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
7
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
8

    

[('a', 'b'), ('a', 'c'), ('b', 'c')]
8
[('a', 'b'), ('a', 'c'), ('b', 'c')]
9from0 from1from2
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
06
[('a', 'b'), ('a', 'c'), ('b', 'c')]
6
[['a', 'b'], ['a', 'c'], ['b', 'a'], ['b', 'c'], ['c', 'a'], ['c', 'b']]
08

B. Bằng cách sử dụng các lần lặp lại

Trong đó, trả về sự kết hợp đầu tiên của N phần tử từ chuỗi như vậy, sau đó các kết hợp khác được thực hiện bằng cách xem xét từng phần tử theo vị trí của nó. Mỗi yếu tố được coi là duy nhất dựa trên vị trí của nó, không phải dựa trên giá trị của nó. Vì vậy, nếu các phần tử đầu vào là duy nhất, sẽ không có giá trị lặp lại trong mỗi kết hợp. & NBSP;

Output:   

[('a', 'b'), ('a', 'c'), ('b', 'c')]