@Sunitha Trả lời cung cấp công cụ phù hợp để sử dụng. Tôi sẽ chỉ đi và đề xuất một cách cải thiện trong khi sử dụng phương pháp return_substrings
của bạn. Về cơ bản, giải pháp của tôi sẽ chăm sóc các bản sao.my solution will take care of duplicates.
Tôi sẽ sử dụng "ABCA"
để chứng minh tính hợp lệ của giải pháp của mình. Lưu ý rằng nó sẽ bao gồm một bản sao 'A'
trong danh sách trả lại của câu trả lời được chấp nhận.
Giải pháp Python 3.7+,,
x= "ABCA"
def return_substrings[x]:
all_combnations = [''.join[l] for i in range[len[x]] for l in combinations[x, i+1]]
return list[reversed[list[dict.fromkeys[all_combnations]]]]
# return list[dict.fromkeys[all_combnations]] for none-reversed ordering
print[return_substrings[x]]
>>>>['ABCA', 'BCA', 'ACA', 'ABA', 'ABC', 'CA', 'BA', 'BC', 'AA', 'AC', 'AB', 'C', 'B', 'A']
Giải pháp Python 2.7,,
Bạn sẽ phải sử dụng
return list[reversed[list[dict.fromkeys[all_combnations]]]]
0 thay vì bình thường return list[reversed[list[dict.fromkeys[all_combnations]]]]
1. Vì vậy, return list[reversed[list[dict.fromkeys[all_combnations]]]]
trở thành
return list[reversed[list[OrderedDict.fromkeys[all_combnations]]]]
Đặt hàng là không liên quan cho bạn?
Bạn có thể giảm độ phức tạp của mã nếu đơn hàng không liên quan,
x= "ABCA"
def return_substrings[x]:
all_combnations = [''.join[l] for i in range[len[x]] for l in combinations[x, i+1]]
return list[set[all_combnations]]
Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để tìm tất cả các hoán vị của một chuỗi, bao gồm sử dụng
return list[reversed[list[dict.fromkeys[all_combnations]]]]
2, đệ quy và python cho các vòng lặp. Bạn cũng sẽ học cách tìm tất cả các kết hợp của một chuỗi khi thay thế các chữ cái riêng lẻ được cho phép.Nhưng hoán vị là gì? Một hoán vị là một thứ tự khác nhau của một mặt hàng. Vì vậy, ví dụ, chuỗi
3 cũng có thể được viết là return list[reversed[list[dict.fromkeys[all_combnations]]]]
4.So, for example, the string return list[reversed[list[dict.fromkeys[all_combnations]]]]
return list[reversed[list[dict.fromkeys[all_combnations]]]]
3 can also be written as return list[reversed[list[dict.fromkeys[all_combnations]]]]
4.Câu trả lời nhanh: Người dùng itertools để tìm tất cả các hoán vị của chuỗi User Itertools to Find All Permutations of a String
- Hoán vị của một chuỗi là gì?
- Sử dụng itertools trong python để tìm tất cả các hoán vị của một chuỗi
- Sử dụng đệ quy trong python để tìm tất cả các hoán vị của một chuỗi
- Hoán vị với sự lặp lại của một chuỗi trong Python
- Sự kết luận
Hắn của một chuỗi đề cập đến tất cả các thứ tự khác nhau mà một chuỗi có thể thực hiện. Ví dụ, hãy cùng xem một chuỗi có ba chữ cái:
return list[reversed[list[dict.fromkeys[all_combnations]]]]
5. Khi chúng tôi tìm thấy tất cả các hoán vị của chuỗi này, chúng tôi sẽ trả về danh sách sau: return list[reversed[list[dict.fromkeys[all_combnations]]]]
4. Chúng ta có thể thấy ở đây, rằng chúng ta có một danh sách chứa sáu mục.Chúng ta thực sự có thể tính toán số lượng hoán vị mà một chuỗi sẽ có cho bất kỳ cường độ độ dài nào, bằng cách tính toán độ dài của độ dài của nó. Vì vậy, trong ví dụ của chúng tôi về
return list[reversed[list[dict.fromkeys[all_combnations]]]]
5, chúng tôi sẽ tính toán giá trị của return list[reversed[list[dict.fromkeys[all_combnations]]]]
8, thực sự đánh giá là return list[reversed[list[dict.fromkeys[all_combnations]]]]
9.Bây giờ bạn có một sự hiểu biết về ý nghĩa của việc tạo ra tất cả các kết hợp của một chuỗi trong Python, hãy để xem cách chúng ta có thể dễ dàng tạo ra các hoán vị khác nhau của một chuỗi.
Itertools là một công cụ Python tuyệt vời, tích hợp, cho phép bạn thực hiện công việc dễ dàng của các vấn đề liên quan đến Iterables. Dù bạn có tin hay không, chuỗi trong Python là những đối tượng có thể hiểu được! Bởi vì điều này, chúng ta có thể dễ dàng lặp lại các chuỗi của mình bằng thư viện
return list[reversed[list[dict.fromkeys[all_combnations]]]]
2.Trên thực tế, thư viện ITERTOOLS có một hàm gọi là
return list[reversed[list[OrderedDict.fromkeys[all_combnations]]]]
1. Chúng tôi chúng tôi vượt qua trong một trường hợp khác, trong trường hợp này, một chuỗi, hàm trả về một danh sách tất cả các kết hợp có thể.Hãy cùng xem chuỗi ví dụ của chúng tôi và cách chúng tôi có thể sử dụng thư viện ITERTOOLS để tính toán các hoán vị của nó:
import itertools a_string = 'abc' string_permutations = itertools.permutations[a_string] string_permutations = list[string_permutations] string_permutations = [''.join[permutation] for permutation in string_permutations] print[string_permutations] # Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
Hãy cùng xem những gì chúng tôi đã làm ở đây:
- Chúng tôi đã nhập thư viện Itertools
- Chúng tôi đã tải chuỗi của chúng tôi và được gán nó cho biến
2return list[reversed[list[OrderedDict.fromkeys[all_combnations]]]]
- Sau đó chúng tôi đã sử dụng chức năng
3 để tạo đối tượng itertoolsreturn list[reversed[list[OrderedDict.fromkeys[all_combnations]]]]
- Chúng tôi đã biến đối tượng này thành một danh sách, đã trả lại một danh sách các bộ dữ liệu, chứa các hoán vị của chúng tôi
- Cuối cùng, chúng tôi đã sử dụng một danh sách hiểu biết để kết hợp các hoán vị của chúng tôi thành các chuỗi riêng lẻ
Trong phần tiếp theo, bạn sẽ học cách sử dụng đệ quy để tìm sự kết hợp của một chuỗi trong Python.
Bạn muốn tìm hiểu thêm về toàn bộ danh sách Python? Kiểm tra hướng dẫn chuyên sâu này bao gồm mọi thứ bạn cần biết, với các ví dụ thực hành. Thêm một người học trực quan, hãy xem hướng dẫn YouTube của tôi ở đây. Check out this in-depth tutorial that covers off everything you need to know, with hands-on examples. More of a visual learner, check out my YouTube tutorial here.
Sử dụng đệ quy trong python để tìm tất cả các hoán vị của một chuỗi
Hoán vị với sự lặp lại của một chuỗi trong Pythonbacktracking. The idea is that we backtrack for each possible combination that can exist.
Sự kết luận
# Getting all permutations of a string using recursion in Python a_string = 'abc' def get_permutation[some_string, idx=0]: if idx == len[some_string] - 1: print["".join[some_string]] for j in range[idx, len[some_string]]: words_list = [c for c in some_string] words_list[idx], words_list[j] = words_list[j], words_list[idx] get_permutation[words_list, idx + 1] permutations = get_permutation[a_string] print[permutations] # Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
Hắn của một chuỗi đề cập đến tất cả các thứ tự khác nhau mà một chuỗi có thể thực hiện. Ví dụ, hãy cùng xem một chuỗi có ba chữ cái:
return list[reversed[list[dict.fromkeys[all_combnations]]]]
5. Khi chúng tôi tìm thấy tất cả các hoán vị của chuỗi này, chúng tôi sẽ trả về danh sách sau: return list[reversed[list[dict.fromkeys[all_combnations]]]]
4. Chúng ta có thể thấy ở đây, rằng chúng ta có một danh sách chứa sáu mục.Chúng ta thực sự có thể tính toán số lượng hoán vị mà một chuỗi sẽ có cho bất kỳ cường độ độ dài nào, bằng cách tính toán độ dài của độ dài của nó. Vì vậy, trong ví dụ của chúng tôi về
5, chúng tôi sẽ tính toán giá trị của return list[reversed[list[dict.fromkeys[all_combnations]]]]
8, thực sự đánh giá là return list[reversed[list[dict.fromkeys[all_combnations]]]]
9. This tutorial teaches you exactly what the return list[reversed[list[dict.fromkeys[all_combnations]]]]
return list[reversed[list[OrderedDict.fromkeys[all_combnations]]]]
4 function does and shows you some creative ways to use the function.Hoán vị với sự lặp lại của một chuỗi trong Python
Trong các ví dụ trên, chúng tôi đã sử dụng Python để tìm tất cả các kết hợp của một chuỗi mà không lặp lại. Trong phần này, bạn sẽ học cách sử dụng Python để có được tất cả các hoán vị của một chuỗi với sự lặp lại.
Điều này có thể dễ dàng thực hiện bằng cách sử dụng một python cho vòng lặp.
Hãy cùng xem một ví dụ, sử dụng cùng một chuỗi mà chúng ta đã sử dụng trước đây,
return list[reversed[list[dict.fromkeys[all_combnations]]]]
5:# Use Python to get all combinations of a string with repetition a_string = 'abc' final_list = [[]] length = len[a_string] groups = [list[a_string]] * length for i in groups: final_list = [x+[y] for x in final_list for y in i] permutations = [''.join[item] for item in final_list] print[permutations] # Returns ['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
Trong mã ở trên, chúng tôi sử dụng một vòng lặp cho vòng lặp và danh sách hiểu để trả về tất cả các kết hợp của chuỗi python với sự lặp lại.
Mã trên có thể trở nên khá nhiều tài nguyên. Chúng ta cũng có thể thấy ở đây rằng chúng ta có nhiều lần kết hợp hơn nhiều lần khi chúng ta sử dụng sự lặp lại so với nếu chúng ta không.
Bạn muốn tìm hiểu thêm về Python for-loops? Kiểm tra hướng dẫn chuyên sâu của tôi đưa người dùng từ người mới bắt đầu đến nâng cao cho người dùng! Bạn muốn xem một video thay thế? Kiểm tra hướng dẫn YouTube của tôi ở đây. Check out my in-depth tutorial that takes your from beginner to advanced for-loops user! Want to watch a video instead? Check out my YouTube tutorial here.
Sự kết luận
Trong bài đăng này, bạn đã học cách sử dụng Python để tạo danh sách tất cả các hoán vị của một chuỗi. Bạn đã học cách thực hiện việc này bằng thư viện
return list[reversed[list[dict.fromkeys[all_combnations]]]]
2 phổ biến cũng như sử dụng đệ quy. Sau đó, bạn đã học được cách sử dụng Python cho vòng lặp để tạo danh sách tất cả các kết hợp của một chuỗi khi sự lặp lại được cho phép.Để tìm hiểu thêm về chức năng
return list[reversed[list[OrderedDict.fromkeys[all_combnations]]]]
8, hãy xem tài liệu chính thức.