Hướng dẫn python combinations without repetition - kết hợp python không lặp lại
Bạn đang tìm kiếm sản phẩm Cartesian. Show Nội phân chính
Nội phân chính
Nội phân chính
Nội phân chính
Trong trường hợp của bạn, đây sẽ là
Để có được một cuộn xúc xắc ngẫu nhiên (theo một cách hoàn toàn không hiệu quả):totally inefficient way):
. Nếu bạn là một danh sách, từ điển hoặc đối tượng có thể lặp lại khác của các giá trị mà bạn cần để tạo các kết hợp và hoán vị từ, Python có mô-đun 1 là:ordering of all of the values, while the combinations are every possible selection of some, none, or all of the values. For example, the permutations and combinations of the set 1 are:
Bạn cũng có thể sử dụng lại các giá trị nhiều lần, được gọi là hoán vị với sự lặp lại và kết hợp với sự lặp lại (còn được gọi là thay thế):
. Số lượng hoán vị và kết hợp nhanh chóng tăng lên khi nhiều giá trị được thêm vào đối tượng có thể lặp lại. Tổng số hoán vị và kết hợp được đưa ra sau:
Nhưng để có Python tạo hoán vị, bạn có thể sử dụng 2:>>> import itertools >>> for v in itertools.permutations(['A', 'B', 'C']): ... print(v) ... ('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A') >>> >>> list(itertools.permutations(['A', 'B', 'C'])) [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')] >>> list(itertools.permutations(['A', 'B', 'C'], 2)) [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')] >>> list(itertools.permutations(['A', 'B', 'C'], 1)) [('A',), ('B',), ('C',)] Để có các kết hợp tạo python, bạn có thể sử dụng 3:>>> import itertools >>> for v in itertools.combinations(['A', 'B', 'C'], 2): ... print(v) ... ('A', 'B') ('A', 'C') ('B', 'C') >>> list(itertools.combinations(['A', 'B', 'C'], 1)) [('A',), ('B',), ('C',)] >>> list(itertools.combinations(['A', 'B', 'C'], 2)) [('A', 'B'), ('A', 'C'), ('B', 'C')] >>> list(itertools.combinations(['A', 'B', 'C'], 3)) [('A', 'B', 'C')] Lưu ý rằng hàm 4 lấy đối số thứ hai cho số lượng giá trị được chọn. Để có được tất cả các kết hợp (còn được gọi là bộ sức mạnh), bạn sẽ cần thực hiện nhiều cuộc gọi đến 4:all combinations (also called the power set), you'll need to make multiple calls to 4:>>> powerSet = [] >>> import itertools >>> for k in range(4): ... powerSet.extend(itertools.combinations(['A', 'B', 'C'], k)) ... >>> powerSet [(), ('A',), ('B',), ('C',), ('A', 'B'), ('A', 'C'), ('B', 'C'), ('A', 'B', 'C')] Để có được hoán vị với sự lặp lại/thay thế, hãy gọi 6 và vượt qua kích thước của đối tượng có thể lặp lại cho đối số 7 của nó:>>> import itertools >>> for v in itertools.product(['A', 'B', 'C'], repeat=3): ... print(v) ... ('A', 'A', 'A') ('A', 'A', 'B') ('A', 'A', 'C') ('A', 'B', 'A') ('A', 'B', 'B') ('A', 'B', 'C') ('A', 'C', 'A') ('A', 'C', 'B') ('A', 'C', 'C') ('B', 'A', 'A') ('B', 'A', 'B') ('B', 'A', 'C') ('B', 'B', 'A') ('B', 'B', 'B') ('B', 'B', 'C') ('B', 'C', 'A') ('B', 'C', 'B') ('B', 'C', 'C') ('C', 'A', 'A') ('C', 'A', 'B') ('C', 'A', 'C') ('C', 'B', 'A') ('C', 'B', 'B') ('C', 'B', 'C') ('C', 'C', 'A') ('C', 'C', 'B') ('C', 'C', 'C') >>> list(itertools.product(['A', 'B', 'C'], repeat=3)) [('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'A'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'A'), ('A', 'C', 'B'), ('A', 'C', 'C'), ('B', 'A', 'A'), ('B', 'A', 'B'), ('B', 'A', 'C'), ('B', 'B', 'A'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'A'), ('B', 'C', 'B'), ('B', 'C', 'C'), ('C', 'A', 'A'), ('C', 'A', 'B'), ('C', 'A', 'C'), ('C', 'B', 'A'), ('C', 'B', 'B'), ('C', 'B', 'C'), ('C', 'C', 'A'), ('C', 'C', 'B'), ('C', 'C', 'C')] Để có được sự kết hợp với sự lặp lại/thay thế, hãy gọi 8:>>> import itertools >>> for v in itertools.combinations_with_replacement(['A', 'B', 'C'], 3): ... print(v) ... ('A', 'A', 'A') ('A', 'A', 'B') ('A', 'A', 'C') ('A', 'B', 'B') ('A', 'B', 'C') ('A', 'C', 'C') ('B', 'B', 'B') ('B', 'B', 'C') ('B', 'C', 'C') ('C', 'C', 'C') >>> list(itertools.combinations_with_replacement(['A', 'B', 'C'], 3)) [('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'C'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'C'), ('C', 'C', 'C')] Nếu bạn giống như tôi và bạn gặp khó khăn khi nhớ sự khác biệt giữa hoán vị và kết hợp, có và không có sự lặp lại, và các chức năng Python nào thực hiện chúng, hãy đánh dấu trang này để có quyền truy cập dễ dàng trong tương lai. Làm thế nào để bạn thực hiện hoán vị với sự lặp lại trong Python?Chuỗi Python: Tập thể dục-52 với giải pháp.. Giải pháp mẫu:-. Mã Python: Từ ITERTOOLS Nhập sản phẩm def All_repeat (str1, rno): chars = list (str1) kết quả = [] cho c trong sản phẩm (chars, lặp lại = rno): kết quả. xyz ', 3)) in (all_repeat (' xyz ', 2)) in (all_repeat (' abcd ', 4)). Làm thế nào để bạn giải quyết hoán vị với sự lặp lại?Hoán vị với sự lặp lại: Phương pháp này được sử dụng khi chúng ta được yêu cầu đưa ra các lựa chọn khác nhau mỗi lần và với các đối tượng khác nhau. ... công thức cho hoán vị .. Làm thế nào để bạn thực hiện hoán vị trong Python mà không có itertools?A. Để 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 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.iterate the list one by one and fix the first element of the list and make combinations with the remaining list. Similarly, iterate with all the list elements one by one by recursion of the remaining list. Làm thế nào để bạn tìm thấy hoán vị của một danh sách trong Python?Số lượng hoán vị trên một tập hợp các phần tử N được đưa ra bởi N !.Ví dụ, có 2!= 2*1 = 2 hoán vị của {1, 2}, cụ thể là {1, 2} và {2, 1} và 3!= 3*2*1 = 6 hoán vị của {1, 2, 3}, cụ thể là {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2} và {3, 2, 1}.n!. For example, there are 2! = 2*1 = 2 permutations of {1, 2}, namely {1, 2} and {2, 1}, and 3! = 3*2*1 = 6 permutations of {1, 2, 3}, namely {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2} and {3, 2, 1}. |