簡體   English   中英

Python:更好的方式來獲取每個字母/數字/等。 從一個字符串並將其轉換為一個列表?

[英]Python: Better way to take every letter/number/etc. from a string and convert it into a list?

我實際上知道如何使用loop ,但代碼看起來太丑了:-(。所以我想問一些更好的方法。

我有一個字符串:

a = "123 456 7sr"

我想將每個數字/字母/空格/等轉換為列表。 期望的結果應該是:

["1", "2", "3", " ", "4", "5", "6", " ", "7", "s", "r"]

還有其他一些方法嗎? (請不要使用for/while loop

謝謝您的幫助!

在任何地方都可以使用的直接方法是調用list的構造函數,它將任何可迭代的(和str是它們的字符的可迭代)轉換為迭代產生的值的list

list(a)

在Python 3.5+以及其他解包方案概括中 ,您可以選擇:

[*a]

這相當於list(a) ,除了它不需要查找並通過通用函數調用語義調用list構造函數(使其稍微更快並使其免受意外行為更改,如果list是名稱陰影,例如因為某人做了像list = [1,2,3]這樣糟糕的事情。

所有其他方法(例如,無操作列表推導)都是這兩種方法的較慢,較為丑陋的版本。

這很簡單:

>>> a = "123 456 7sr"
>>> list(a)
['1', '2', '3', ' ', '4', '5', '6', ' ', '7', 's', 'r']

這可能不會更好,但另一種方法是使用列表理解:

a = "123 456 7sr"
print([e for e in a])

輸出:

['1', '2', '3', ' ', '4', '5', '6', ' ', '7', 's', 'r']

字符串是可迭代元素,因此將iteratable傳遞給列表的構造函數,然后它將返回一個列表。

>>a="123 456 7sr"
>>a=list(a)
>>print(a)
>>['1', '2', '3', ' ', '4', '5', '6', ' ', '7', 's', 'r']
>>print(type(a))
>>list

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM