Hướng dẫn what is permutation of string in python? - hoán vị của chuỗi trong python là gì?

Trong ví dụ này, bạn sẽ học cách tính toán tất cả các hoán vị của chuỗi.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình Python sau:

  • Chuỗi Python
  • Python cho vòng lặp

Hoán vị là phương pháp chọn các phần tử từ một tập hợp theo những cách khác nhau.

Ví dụ: số cách mà các ký tự từ yup có thể được chọn là yup, ypu, uyp,

yup
ypu
uyp
upy
puy
pyu
None
0,
yup
ypu
uyp
upy
puy
pyu
None
1,
yup
ypu
uyp
upy
puy
pyu
None
2 và không chọn bất kỳ.

Chúng tôi sẽ thực hiện tương tự trong các ví dụ sau.


Ví dụ 1: Sử dụng đệ quy

def get_permutation(string, i=0):

    if i == len(string):   	 
        print("".join(string))

    for j in range(i, len(string)):

        words = [c for c in string]
   
        # swap
        words[i], words[j] = words[j], words[i]
   	 
        get_permutation(words, i + 1)

print(get_permutation('yup'))

Đầu ra

yup
ypu
uyp
upy
puy
pyu
None

Trong ví dụ này, đệ quy được sử dụng để tìm các hoán vị của chuỗi yup.

  • IF điều kiện in
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    4 được truyền dưới dạng đối số nếu nó bằng chiều dài của
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    5.
  • Trong mỗi lần lặp của vòng lặp, mỗi ký tự của yup được lưu trữ trong
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    7.
  • Các yếu tố của các từ được hoán đổi. Theo cách này, chúng tôi đạt được tất cả các kết hợp khác nhau của các nhân vật.
  • Quá trình này tiếp tục cho đến khi đạt được độ dài tối đa.

Ví dụ 2: Sử dụng itertools

from itertools import permutations

words = [''.join(p) for p in permutations('pro')]

print(words)

Đầu ra

['pro', 'por', 'rpo', 'rop', 'opr', 'orp']

Trong ví dụ này, đệ quy được sử dụng để tìm các hoán vị của chuỗi yup.

Đầu tiên nhập gói ITERTOOLS để thực hiện phương thức hoán vị trong Python. Phương thức này lấy một danh sách làm đầu vào và trả về một danh sách đối tượng các bộ dữ liệu chứa tất cả các hoán vị trong một biểu mẫu danh sách.

Xem thảo luận

Cải thiện bài viết

  • Lưu bài viết
  • Đọc
  • Đầu tiên nhập gói ITERTOOLS để thực hiện phương thức hoán vị trong Python. Phương thức này lấy một danh sách làm đầu vào và trả về một danh sách đối tượng các bộ dữ liệu chứa tất cả các hoán vị trong một biểu mẫu danh sách.

    Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận
    ABC ACB BAC BCA CBA CAB

    Một hoán vị cũng được gọi là một số sắp xếp của người Viking, hoặc đơn đặt hàng, là một sự sắp xếp lại các yếu tố của một danh sách được đặt hàng thành một thư từ một-một với chính s. Một chuỗi độ dài n có n! hoán vị. & nbsp;

    Hướng dẫn what is permutation of string in python? - hoán vị của chuỗi trong python là gì?

    Python3

    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    9
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    0
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    1
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    2

    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    3
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    4
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    5
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    1
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    7

    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    9
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    9

    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    3
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    1
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    2
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    5

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    7
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    8

    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    3
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    0
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    1

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    3
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    4
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    5
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    6
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    7
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    8

    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    1
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    2
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    4

    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    1
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    6
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    8
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    9
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    9

    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    1
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    2
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    4

    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    1
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    6
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    8
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    9
    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba
    9

    yup4

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3 yup6

    yup7

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3 yup9yup0

    yup5yup6yup7yup8

    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    9
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    7

    Output:  

    ABC
    ACB
    BAC
    BCA
    CBA
    CAB

    yup1

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3 yup3yup0Backtracking 

    Mô hình thuật toán: Backtracking & nbsp;O(n*n!) Note that there are n! permutations and it requires O(n) time to print a permutation.

    Không gian phụ trợ: O (R - L)O(r – l)

    Lưu ý: Giải pháp trên in các hoán vị trùng lặp nếu có các ký tự lặp lại trong chuỗi đầu vào. Vui lòng xem liên kết dưới đây cho một giải pháp chỉ in các hoán vị riêng biệt ngay cả khi có các bản sao trong Input. Bản in tất cả các hoán vị riêng biệt của một chuỗi đã cho The above solution prints duplicate permutations if there are repeating characters in the input string. Please see the below link for a solution that prints only distinct permutations even if there are duplicates in input.
    Print all distinct permutations of a given string with duplicates. 
    Permutations of a given string using STL

    Cách tiếp cận khác:

    Python3

    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    9 ypu2

    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    3
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    1 ypu5yup9ypu7
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3 yup6__

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    7uyp4
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3 uyp6
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    7

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    4

    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    3
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    3
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    4
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    5
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    6ypu55__69
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    07

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    09
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    11

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    13
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    15yup6
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    17

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    19
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    21
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    8
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    9
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    24

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    26
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    13
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    8
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    30

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    6
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    32
    ABC
    ACB
    BAC
    BCA
    CBA
    CAB
    8
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    34

    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    35
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    37

    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    38
    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    3
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    40ypu5
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    42
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    7

    ['pro', 'por', 'rpo', 'rop', 'opr', 'orp']
    7ypu5
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    46
    from itertools import permutations
    
    words = [''.join(p) for p in permutations('pro')]
    
    print(words)
    7

    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    48

    Output:

    Enter the string : abc
    All possible strings are : abc  acb  bac  bca  cab  cba

    Độ phức tạp về thời gian: O (n*n!) Độ phức tạp thời gian giống như cách tiếp cận trên, tức là có n! hoán vị và nó yêu cầu thời gian O (n) để in hoán vị. O(n*n!) The time complexity is the same as the above approach, i.e. there are n! permutations and it requires O(n) time to print a permutation.

    Không gian phụ trợ: O (| s |)O(|s|)


    Làm thế nào để bạn đếm hoán vị của một chuỗi trong Python?

    Tìm tất cả các hoán vị của một chuỗi trong Python..
    nhập itertools ..
    Nếu __name__ == '__main__':.
    s = 'abc'.
    Nums = Danh sách (S).
    hoán vị = danh sách (itertools. hoán vị (nums)).
    # Đầu ra: ['ABC', 'ACB', 'BAC', 'BCA', 'Cab', 'CBA'].
    in ([''. Tham gia (hoán vị) cho hoán vị trong hoán vị]).

    Hoán vị của một chuỗi có nghĩa là gì?

    Một hoán vị của một chuỗi là một chuỗi khác chứa cùng các ký tự, chỉ thứ tự của các ký tự có thể khác nhau. Ví dụ, ABCD, và DABC là hoán vị của nhau.another string that contains same characters, only the order of characters can be different. For example, “abcd” and “dabc” are Permutation of each other.

    Làm thế nào để bạn tìm thấy hoán vị của một chuỗi?

    Thuật toán cho hoán vị của một chuỗi trong java, trước tiên chúng ta sẽ lấy ký tự đầu tiên từ chuỗi và hoán vị với các ký tự còn lại.Nếu chuỗi = abc abc đầu tiên char = A và các hoán vị ký tự còn lại là BC và CB.Bây giờ chúng ta có thể chèn char đầu tiên vào các vị trí có sẵn trong các hoán vị.first take the first character from the String and permute with the remaining chars. If String = “ABC” First char = A and remaining chars permutations are BC and CB. Now we can insert first char in the available positions in the permutations.

    Làm thế nào để một chức năng hoán vị hoạt động trong Python?

    Đầu tiên nhập gói ITERTOOLS để thực hiện phương thức hoán vị trong Python.Phương thức này lấy một danh sách làm đầu vào và trả về một danh sách đối tượng các bộ dữ liệu chứa tất cả các hoán vị trong một biểu mẫu danh sách.takes a list as an input and returns an object list of tuples that contain all permutations in a list form.