python join string - كيفية تقسيم سلسلة إلى مجموعة من الشخصيات؟




5 Answers

>>> s = "foobar"
>>> list(s)
['f', 'o', 'o', 'b', 'a', 'r']

أنت بحاجة إلى list

split java

لقد حاولت أن أبحث في جميع أنحاء شبكة الإنترنت للحصول على إجابات لتقسيم سلسلة إلى مجموعة من الأحرف ولكن لا يبدو لي أن العثور على طريقة بسيطة

لا يبدو str.split(//) يعمل مثل روبي. هل هناك طريقة بسيطة للقيام بذلك دون التكرار؟




يمكنك أيضا القيام بذلك بطريقة بسيطة للغاية دون قائمة ():

>>> [c for c in "foobar"]
['f', 'o', 'o', 'b', 'a', 'r']



تتلخص المهمة في التكرار فوق حروف السلسلة وجمعها في قائمة. قد يبدو الحل الأكثر سذاجة

result = []
for character in string:
    result.append(character)

بالطبع ، يمكن اختصارها إلى مجرد

result = [character for character in string]

لكن لا تزال هناك حلول أقصر تفعل الشيء نفسه.

منشئ list يمكن استخدامها لتحويل أي iterable (التكرارات ، والقوائم ، الصفوف ، سلسلة الخ) إلى القائمة.

>>> list('abc')
['a', 'b', 'c']

الزائد الكبير هو أنه يعمل بنفس الطريقة في كل من Python 2 و Python 3.

أيضًا ، بدءًا من Python 3.5 (بفضل PEP 448 الرائع) ، أصبح من الممكن الآن إنشاء قائمة من أي تكرارية عن طريق تفريغها إلى قائمة حرفية فارغة:

>>> [*'abc']
['a', 'b', 'c']

هذا هو neater ، وفي بعض الحالات أكثر كفاءة من استدعاء list constructor مباشرة.

أنصح بعدم استخدام الطرق القائمة على map ، لأن map لا تعرض قائمة في Python 3. انظر كيف تستخدم الفلتر ، والخريطة ، والتقليل في Python 3 .




بسيط:

s = 'My'    
print(list(s))



حسنا ، بقدر ما يعجبني نسخة القائمة (ق) ، وهنا طريقة أخرى مطولة وجدت (ولكن من الرائع لذلك كنت أعتقد أنني سأضيفه إلى المشاجرة):

>>> text = "My hovercraft is full of eels"
>>> [text[i] for i in range(len(text))]
['M', 'y', ' ', 'h', 'o', 'v', 'e', 'r', 'c', 'r', 'a', 'f', 't', ' ', 'i', 's', ' ', 'f', 'u', 'l', 'l', ' ', 'o', 'f', ' ', 'e', 'e', 'l', 's']



Related


Tags

python   split