تبديل السلاسل في بايثون
يمكن أن يكون العثور على جميع التباديل الممكنة لسلسلة معينة مهمة صعبة. ومع ذلك، توفر بايثون حلاً مباشرًا باستخدام وحدة itertools.
الحل: itertools.permutations()
تم تصميم طريقة itertools.permutations() خصيصًا لإنشاء التباديل. . فهو يأخذ كائنًا قابلاً للتكرار كمدخل ويعيد كائنًا منشئًا يتكرر عبر جميع التباديل الممكنة للتكرار.
في حالة السلسلة، يمكننا تحويلها إلى كائن قابل للتكرار باستخدام وظيفة list(). للحصول على جميع التباديل الممكنة للسلسلة، نستخدم الكود التالي:
from itertools import permutations
string = 'stack'
perms = [''.join(p) for p in permutations(list(string))]
ستكون النتيجة قائمة من السلاسل التي تحتوي على جميع التباديل للسلسلة الأصلية.
التعامل مع التكرارات
إذا كنت ترغب في استبعاد التباديل المكررة، فيمكنك استخدام مجموعة لأنها تحتفظ فقط بالعناصر الفريدة.
perms = set([''.join(p) for p in permutations(list(string))])
مزايا itertools.permutations()
مثال على المخرجاتبالنسبة للسلسلة 'stack'، ستحتوي قائمة المخرجات على التباديل التالية:
['stack'، 'stakc "، "stcak"، "stcka"، "stkac"، "stkca"، "satck"، "satkc"، "sactk"، "sackt"، "saktc"، "sakct"، "sctak"، "sctka"، "scatk"، "scakt"، "sckta"، "sckat"، "sktac"، "sktca"، "skatc"، "skact"، "skcta"، "skcat"، "tsack"، "tsakc"، "tscak" "، "tscka"، "tskac"، "tskca"، "tasck"، "taskc"، "tacsk"، "tacks"، "taksc"، "takcs"، "tcsak"، "tcska"، "tcask"، "tcaks"، "tcksa"، "tckas"، "tksac"، "tksca"، "tkasc"، "tkacs"، "tkcsa"، "tkcas"، "astck"، "astkc"، "asctk"، "asckt" "، "asktc"، "askct"، "atsck"، "atskc"، "atcsk"، "atcks"، "atksc"، "atkcs"، "acstk"، "acskt"، "actsk"، "actks"، "ackst"، "ackts"، "akstc"، "aksct"، "aktsc"، "aktcs"، "akcst"، "akcts"، "cstak"، "cstka"، "csatk"، "csakt"، "cskta" "، "cskat"، "ctsak"، "ctska"، "ctask"، "ctaks"، "ctksa"، "ctkas"، "castk"، "caskt"، "catsk"، "catks"، "cakst"، "cakts"، "cksta"، "cksat"، "cktsa"، "cktas"، "ckast"، "ckats"، "kstac"، "kstca"، "ksatc"، "ksact"، "kscta"، "kscat" "، "ktsac"، "ktsca"، "ktasc"، "ktacs"، "ktcsa"، "ktcas"، "kastc"، "kasct"، "katsc"، "katcs"، "kacst"، "kacts"، 'kcsta'، 'kcsat'، 'kctsa'، 'kctas'، 'kcast'، 'kcats']
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3