Nếu bạn sợ hết bộ nhớ sử dụng bộ nhớ. Tiếp tục gọi d.next [] cho các giá trị của bạn. Nó chỉ hiệu quả cho các vòng lồng nhỏ.
>>> s = 'abc'
>>> d =[ [x,y,z] for x in s for y in s for z in s]
>>> d.next[]
'aaa'
>>> d.next[]
'aab'
Nếu bạn muốn tất cả các giá trị chỉ cần làm
list[d]
Để sử dụng độ dài tùy ý: Điều này tạo ra nhiều nhóm như các yếu tố trong chuỗi và sau đó lặp lại trên tất cả chúng và tiếp tục thêm vào kết quả cuối cùng. Đây là cách itertools.product được triển khai trong Python. Để biết thêm chi tiết, hãy truy cập tại đây
def product[x]:
final = [[]]
l = len[x]
groups = [list[x]] * l
for i in groups:
final = [x+[y] for x in final for y in i]
for k in final:
yield ''.join[k]
Buộc tất cả các kết quả:
list[product['abc']]
['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']
Hoán vị là một sự sắp xếp của các đối tượng theo một thứ tự cụ thể. Thứ tự sắp xếp đối tượng là rất quan trọng. Số lượng hoán vị trên một bộ các phần tử & nbsp; n & nbsp; được đưa ra bởi & nbsp; N!. & nbsp; ví dụ, có & nbsp; 2! = 2*1 = 2 & nbsp; hoán vị của & nbsp; {1, 2}, cụ thể là & nbsp; {1, 2} & nbsp; và & nbsp; = 3*2*1 = 6 & nbsp; hoán vị của & nbsp; {1, 2, 3}, cụ thể là & nbsp; {1, 2, 3}, & nbsp; {1, 3, 2}, & nbsp; & nbsp; {2, 3, 1}, & nbsp; {3, 1, 2} và & nbsp; {3, 2, 1}. & nbsp;
Phương pháp 1 [quay lại] & nbsp; chúng ta có thể sử dụng giải pháp đệ quy dựa trên backtracking được thảo luận ở đây.
We can use the backtracking based recursive solution discussed here.
Method 2
The idea is to one by one extract all elements, place them at first position and recur for remaining list.
Python3
def
permutation[lst]:
____10
list[d]
1 list[d]
2list[d]
3list[d]
4list[d]
4 list[d]
6list[d]
7list[d]
8list[d]
9 def product[x]:
final = [[]]
l = len[x]
groups = [list[x]] * l
for i in groups:
final = [x+[y] for x in final for y in i]
for k in final:
yield ''.join[k]
0Các
list[d]
8list[d]
9 list[product['abc']]
['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']
1list[d]
0list[product['abc']]
['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']
3list[d]
4 list[product['abc']]
['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']
5____10
list[product['abc']]
['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']
7 list[product['abc']]
['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']
8list[product['abc']]
['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']
9 ['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']0
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']1
list[d]
2['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']3
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']4
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']5
list[d]
4 ['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']7
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']4___
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']4
list[product['abc']]
['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']
7 [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]9
list[product['abc']]
['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']
9 out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]1
out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]2
out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]3
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]2
out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]5
list[d]
0list[d]
9 out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]8
out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]9
list[d]
4 ['abc', 'acb', 'bac', 'bca', 'cba', 'cab']1
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']1
['abc', 'acb', 'bac', 'bca', 'cba', 'cab']3
['abc', 'acb', 'bac', 'bca', 'cba', 'cab']4
list[product['abc']]
['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']
7 [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]9
list[product['abc']]
['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']
9 ['abc', 'acb', 'bac', 'bca', 'cba', 'cab']8
list[d]
0def
0 def
1Output:
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']
Phương pháp 3 [hàm trực tiếp] & nbsp; chúng ta có thể làm điều đó bằng cách sử dụng chức năng hoán vị tích hợp trong thư viện ITERTOOLS. Đó là kỹ thuật ngắn nhất để tìm thấy hoán vị. & NBSP;
We can do it by simply using the built-in permutation function in itertools library. It is the shortest technique to find the permutation.
Python3
def
2 def
3def
4 def
5
list[product['abc']]
['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']
3list[d]
4 ['abc', 'acb', 'bac', 'bca', 'cba', 'cab']1
def
9['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']0
['1', '2', '3'] ['1', '3', '2'] ['2', '1', '3'] ['2', '3', '1'] ['3', '1', '2'] ['3', '2', '1']1
def product[x]:
final = [[]]
l = len[x]
groups = [list[x]] * l
for i in groups:
final = [x+[y] for x in final for y in i]
for k in final:
yield ''.join[k]
7list[product['abc']]
['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']
permutation[lst]:
4permutation[lst]:
5def
0permutation[lst]:
7
Output:
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Bài viết này được đóng góp bởi Arpit Agarwal. Nếu bạn thích GeekSforGeeks và muốn đóng góp, bạn cũng có thể viết một bài viết và gửi bài viết của bạn. Xem bài viết của bạn xuất hiện trên trang chính của GeekSforGeek và giúp các chuyên viên máy tính khác. Xin vui lòng viết nhận xét nếu bạn tìm thấy bất cứ điều gì không chính xác hoặc bạn muốn chia sẻ thêm thông tin về chủ đề được thảo luận ở trên & NBSP;Arpit Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to . See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find
anything incorrect, or you want to share more information about the topic discussed above
Báo cáo sự cố: Viết một chương trình để tìm tất cả các hoán vị của chuỗi trong Python mà không có iterTools. Write a program to find all the permutations of the string in Python without itertools.
Hoán vị là gì?
Hạ hoán vị là một kỹ thuật được sử dụng để xác định tất cả các chuỗi thu được bằng cách sắp xếp lại các ký tự.
Thí dụ:
- Các hoán vị của chuỗi ab ab là [‘ab,‘ ba,].
- Các hoán vị của chuỗi ABC ABC là [‘ABC,‘ ACB, ‘BAC,‘ BCA, ‘CBA,‘ Cab,].
Số lần hoán vị có thể được hình thành từ chuỗi là permutation[lst]:
8 [n giai thừa]. Trong đó, n là độ dài của chuỗi đã cho.
Solution:
Ở đây chúng tôi đang sử dụng đệ quy để có được tất cả các hoán vị của chuỗi trong Python.
Tìm thấy các hoán vị trong lập trình Python rất dễ dàng khi sử dụng mô -đun python itertools. Nhưng trong chương trình mã hóa cạnh tranh hoặc phỏng vấn mã hóa, bạn phải sử dụng logic của riêng mình thay vì sử dụng itertools.
Mã Python:
out=[] def permute[msg, i, length]: if i==length: out.append["".join[msg]] else: for j in range[i, length]: msg[i], msg[j] = msg[j], msg[i] permute[msg, i+1, length] msg[j], msg[i] = msg[i], msg[j] msg="abc" permute[list[msg], 0, len[msg]] print[out]
Hàm permutation[lst]:
9 lấy danh sách Python làm đầu vào. Vì vậy, bạn phải chuyển đổi chuỗi đã cho thành danh sách bằng hàm
list[d]
00. Sử dụng phương thức list[d]
01 để chuyển đổi danh sách thành chuỗi.Output:
['abc', 'acb', 'bac', 'bca', 'cba', 'cab']
Đây là chương trình đơn giản bạn có thể viết để có được tất cả các hoán vị trong Python mà không cần itertools.
Aniruddha Chaudhari
Tôi hoàn thành Nut Python Nut, Love Linux và Vim với tư cách là một biên tập viên. Tôi giữ một bậc thầy về khoa học máy tính từ NIT Trichy. Tôi lao vào C/C ++, Java cũng vậy. Tôi tiếp tục chia sẻ kiến thức mã hóa của mình và kinh nghiệm của riêng tôi trên Csestack.org Portal.CSEstack.org portal.
Tên của bạn cũng có thể được liệt kê ở đây. Có một mẹo? Gửi nó ở đây để trở thành một tác giả CSestack.CSEstack author.