我需要這個字符串分隔:如何字符串和整數分離到一個列表
s = "I have 10 cars"
到像這樣的列表:
['I','h','a','v','e',10,'c','a','r','s']
中的數字不應該分開。也應該輸入數字作爲整數(沒有這些'')
我需要這個字符串分隔:如何字符串和整數分離到一個列表
s = "I have 10 cars"
到像這樣的列表:
['I','h','a','v','e',10,'c','a','r','s']
中的數字不應該分開。也應該輸入數字作爲整數(沒有這些'')
嘗試將其作爲字符串返回。
list(str("I have 10 cars"))
爲什麼我被拒絕投票? – sawreals
這不起作用。嘗試自己運行它 – Brian
你的回答是錯誤的。它產生'['I','h','a','v','e','1','0','c','a','r','s']',即它也分裂了數字。另外,不需要使用'str'。 – MisterMiyagi
res = []
for item in s.split(' '):
... try:
... int(item)
... res.append(item)
... except:
... res += list(item)
其他的答案這裏有更大的字符串非常低效的。
你應該不使用不必要append
,因爲它可能是非常昂貴的具有更大的字符串。按照我的方式,每當您找到需要的新元素時,都不會調整list
的大小。在效率的興趣,你可以做到這一點,像這樣:
s = "I have 10 cars"
def seperateWithInts(l):
for s in l.split():
if s.isdigit():
yield s
else:
for c in s:
yield c
s2 = [i for i in seperateWithInts(s)]
這裏是一個一行使用列表理解這可能不是最好的選擇。
s = "I have 10 cars"
print [item for sublist in [[x] if x.isdigit() else list(x) for x in s.split(" ")] for item in sublist]
#Output
['I', 'h', 'a', 'v', 'e', '10', 'c', 'a', 'r', 's']
基本上,你分割字符串成包含字符和數字列表的列表,那麼你壓扁名單,所有在列表理解的一舉。
太棒了!祝你好運!詢問一個描述性問題,如果你被卡住了,那麼到目前爲止你已經嘗試和研究過什麼 – Sayse