Hoán vị đề cập đến những cách khác nhau mà chúng ta có thể sắp xếp một danh sách các phần tử đã cho. Kết hợp là cách chúng ta có thể chọn một tập hợp con nhất định các mục từ danh sách lớn hơn, bất kể thứ tự lựa chọn Show Chúng ta có thể tìm các hoán vị và tổ hợp của một từ hoặc một tập hợp số bằng cách sử dụng đệ quy cũng như các phương thức được xác định trước trong thư viện Python itertools Phạm vi của Điều
Giới thiệu về hoán vị trong PythonHãy chơi một trò chơi. mặt cười. Cố gắng hình thành càng nhiều từ càng tốt bằng cách sử dụng tất cả các chữ cái. O, T, P. (Gợi ý. Có 3 từ) Chà, tôi chỉ có thể đoán được hai từ. NỒI và HÀNG ĐẦU. thất vọng. Làm thế nào để tìm ra thứ ba? Ta có thể dùng brute force để sắp xếp các chữ cái trong từ OTP vào mọi vị trí có thể. Chúng ta có thể tìm thấy tất cả các từ bằng cách sử dụng các cách sắp xếp khác nhau của bốn chữ cái. Đây là những gì chúng ta gọi là hoán vị Hoán vị đề cập đến các cách khác nhau trong đó một tập hợp các đối tượng nhất định có thể được sắp xếp. Ví dụ, trong bài toán của chúng ta, chúng ta có thể sắp xếp ba chữ cái theo 6 cách sau Chúng ta có thể tìm các từ khác nhau có thể được tạo ra từ bộ ba chữ cái {O, T, P} bằng cách sử dụng hoán vị và lọc ra các từ có nghĩa. Điều này mang lại cho chúng tôi 3 từ. LỰA CHỌN, HÀNG ĐẦU và POT Bây giờ tôi muốn chơi trò chơi theo đội 3 người và cần chọn 2 trong số 4 người bạn của tôi để thành lập đội của mình. Hãy nhớ rằng thứ tự tôi chọn chúng không tạo ra bất kỳ sự khác biệt nào. Đây được gọi là sự kết hợp. Kết hợp là cách chọn k mục từ một tập hợp gồm n mục (k <= n), trong đó thứ tự lựa chọn không quan trọng. Sơ đồ dưới đây thể hiện 6 cách mà tôi có thể chọn 2 trong số 4 người bạn 6 cách hoặc kết hợp từ một bộ bốn người bạn a, b, c và d là. (a, b), (a, c), (a, d), (b, c) (b, d), (c, d). Bây giờ chúng ta đã hiểu tầm quan trọng của hoán vị và tổ hợp, hãy triển khai chúng bằng Python Nhập thư viện cần thiếtChúng tôi có các phương thức cụ thể trong thư viện itertools của Python để tìm các hoán vị và kết hợp cho một nhóm đối tượng nhất định. Để sử dụng chúng, đầu tiên chúng ta nhập thư viện itertools như sau Hãy cho chúng tôi xem cách chúng tôi có thể sử dụng các phương pháp được xác định trước để tính toán các hoán vị và tổ hợp của một tập hợp các đối tượng, trong các phần tiếp theo Hoán vị trong Python là gì?Hãy để chúng tôi lấy một ví dụ về trò chơi tạo từ mà chúng tôi đã thảo luận trong phần Giới thiệu. Làm cách nào chúng ta có thể sử dụng Python để tạo hoán vị của các chữ cái O, T, P Có hai cách tạo hoán vị trong Python 1. Hoán vị của một chuỗi sử dụng đệ quyTrước khi tìm hiểu về phương thức được xác định trước trong thư viện itertools, trước tiên chúng ta hãy xem hậu trường. Chúng tôi sẽ tìm các hoán vị của một chuỗi đã cho từ đầu, sử dụng đệ quy bước
THÍ DỤ
THÍ DỤ Để in các hoán vị dưới dạng từ, chúng ta có thể nối các bộ như trong đoạn mã dưới đây
Hoán vị của các sốTương tự như tìm hoán vị của một chuỗi, chúng ta cũng có thể tìm hoán vị của một tập hợp số đã cho bằng cách chuyển chúng dưới dạng một lần lặp. Chúng tôi sử dụng cùng một phương thức hoán vị () và chuyển danh sách các số dưới dạng tham số THÍ DỤ
Hoán vị của một độ dài cố địnhGiả sử bây giờ chúng ta cần tìm tất cả các từ có hai chữ cái có thể được tạo bằng chuỗi ban đầu 'OTP'. Đã đến lúc sử dụng tham số độ dài tùy chọn của phương thức permutations(). Chúng tôi có thể chỉ định độ dài mong muốn của mỗi hoán vị bằng cách chuyển nó vào phương thức của chúng tôi THÍ DỤ
Kết hợp trong Python là gì?Kết hợp là những cách mà chúng ta có thể chọn k mục từ danh sách n mục, bất kể thứ tự lựa chọn. Ta hãy xét bài toán cần chọn 2 trong 4 bạn để lập đội. Làm cách nào chúng tôi có thể tạo tất cả các kết hợp của 2 người bạn từ nhóm bạn bè của chúng tôi (a, b, c, d)? CÚ PHÁP kết hợp (['a', 'b', 'c', 'd'], 2) Nếu chúng ta in lệnh trên, chúng ta sẽ nhận được vị trí đối tượng của đối tượng itertools như sau THÔNG SỐ Phương thức kết hợp() nhận 2 tham số bắt buộc
THÍ DỤ Để có được tất cả các kết hợp của 2 người bạn từ danh sách bạn bè của chúng ta ['a', 'b', 'c', 'd'], chúng ta cần lặp qua phương thức kết hợp() bằng vòng lặp for. Đầu ra sẽ là một danh sách các bộ dữ liệu, trong đó mỗi bộ dữ liệu là một sự kết hợp duy nhất. Dưới đây là cách mã và đầu ra sẽ như thế nào
Sự kết hợp của các sốTương tự như tìm các tổ hợp của một danh sách các chuỗi, chúng ta cũng có thể tìm các tổ hợp của một tập hợp số đã cho. Chúng tôi sử dụng cùng một phương thức kết hợp () và chuyển danh sách các số dưới dạng tham số THÍ DỤ
Tổ hợp các số lặp lạiĐiều gì xảy ra nếu có các bản sao trong danh sách mà chúng tôi muốn kết hợp? . Điều này là do các kết hợp được tạo dựa trên các chỉ số hoặc vị trí, không dựa trên các giá trị thực tế. Nếu không có sự lặp lại, chúng tôi sẽ nhận được tất cả các kết hợp duy nhất, không giống như trong trường hợp này THÍ DỤ
Kết hợp với thay thếBây giờ chúng ta hãy xem xét một tình huống mà chúng ta muốn cho phép kết hợp một phần tử với chính nó. Điều này có nghĩa là các phần tử riêng lẻ có thể được lặp lại nhiều lần, ngay cả khi không có sự lặp lại nào trong lần lặp đầu vào ban đầu. Chúng tôi sử dụng phương thức tổ hợp_with_replacement() có trong thư viện itertools để đạt được điều này THÍ DỤ 1 |