การเรียงสับเปลี่ยนของอ็อบเจ็กต์จำนวนหนึ่งคือการแสดงว่าการอัพเดตสามารถแสดงในลำดับต่างๆ ได้อย่างไร แต่บางครั้งเราอาจมีสองวัตถุในชุดของวัตถุที่กำหนดซึ่งเหมือนกัน ในกรณีนั้นสองลำดับจะเท่ากัน ในบทความนี้จะมาดูวิธีการแสดงเฉพาะลำดับที่ไม่ซ้ำจากรายการวัตถุที่กำหนด
โมดูล itertools มีวิธีการที่เรียกว่าพีชคณิตซึ่งช่วยให้เราบรรลุเป้าหมายนี้ เพื่อให้ได้พีชคณิตที่ไม่ซ้ำกัน เราใช้วิธีการตั้งค่าซึ่งเก็บเฉพาะองค์ประกอบที่แตกต่างกัน แต่ก่อนหน้านั้นเราจะได้รับองค์ประกอบในลำดับการเรียงลำดับโดยใช้วิธีการเรียงลำดับ
ในโปรแกรมด้านล่าง K คือจำนวนองค์ประกอบที่ไม่ซ้ำสูงสุดที่เราต้องการแสดงจากการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมด การใช้ while loop เรายังคงเพิ่มองค์ประกอบที่ไม่ซ้ำในรายการสุดท้ายที่เราต้องการแสดงเฉพาะเมื่อยังไม่ได้เพิ่มใน กำหนด.
ตัวอย่าง
from itertools import permutations def permutation_value(str, k): s = sorted(list(str)) p = permutations(s) m = 0 set_1 = set() str = '' while m < k: str = ''.join(p.__next__()) if str not in set_1: set_1.add(str) print(str) m += 1 str = "xyxxz" i = 12 permutation_value(str, i)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
xxxyz xxxzy xxyxz xxyzx xxzxy xxzyx xyxxz xyxzx xyzxx xzxxy xzxyx xzyxx