Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

พิมพ์ n การเรียงสับเปลี่ยนที่แตกต่างกันของสตริงโดยใช้ itertools ใน Python


การเรียงสับเปลี่ยนของอ็อบเจ็กต์จำนวนหนึ่งคือการแสดงว่าการอัพเดตสามารถแสดงในลำดับต่างๆ ได้อย่างไร แต่บางครั้งเราอาจมีสองวัตถุในชุดของวัตถุที่กำหนดซึ่งเหมือนกัน ในกรณีนั้นสองลำดับจะเท่ากัน ในบทความนี้จะมาดูวิธีการแสดงเฉพาะลำดับที่ไม่ซ้ำจากรายการวัตถุที่กำหนด

โมดูล 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