Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hoán vị chuỗi trong Python với itertools.permutations()

Trong hướng dẫn này, chúng ta tìm tất cả hoán vị (permutations) của một chuỗi dùng hàm built-in itertools.permutations().

Quy trình

  1. Import module itertools
  2. Khởi tạo chuỗi
  3. Gọi itertools.permutations(string) → trả về iterator các tuple
  4. Chuyển thành list và xử lý

Code

import itertools

string = "XYZ"

# Lấy tất cả hoán vị (dạng tuple)
perm_tuples = list(itertools.permutations(string))
print("--- Hoán vị dạng tuple ---")
print(perm_tuples)

# Chuyển tuple thành chuỗi
print("--- Hoán vị dạng chuỗi ---")
for tup in perm_tuples:
    print("".join(tup))

Kết quả

--- Hoán vị dạng tuple ---
[('X', 'Y', 'Z'), ('X', 'Z', 'Y'), ('Y', 'X', 'Z'), ('Y', 'Z', 'X'), ('Z', 'X', 'Y'), ('Z', 'Y', 'X')]
--- Hoán vị dạng chuỗi ---
XYZ
XZY
YXZ
YZX
ZXY
ZYX

Lưu ý

  • Số hoán vị = n! (với n = độ dài chuỗi). Chuỗi dài sẽ sinh ra rất nhiều kết quả.
  • permutations(iterable, r) có tham số r tùy chọn: độ dài hoán vị (mặc định = len(iterable))
  • Nếu chuỗi có ký tự trùng lặp, sẽ có hoán vị trùng lặp. Dùng set() để khử trùng.

Ví dụ khử trùng

string = "AAB"
unique_perms = set("".join(p) for p in itertools.permutations(string))
print(unique_perms)  # {'AAB', 'ABA', 'BAA'}