2017-05-09 59 views
0

我有這個字符串包含兩個不同的字符'*'和'。' 。我想要做的是將它們分開並將它們附加到列表中。有沒有更好的方法來拆分字符串的兩個不同字符

例如:

myString='*.***...***.*.*...***..' 

輸出會是這樣的:

myList=['*','.','***','...','***','.','*','.','*','...','***','..'] 

到目前爲止,我對此有一個解決方案,但它不是最好的解決辦法呢。

這裏是我的代碼:

from re import findall 

myString='*.***...***.*.*...***..' 

a=findall(r'[*]+',myString) 
b=findall(r'[.]+',myString) 

myList=[] 

for i in xrange(len(a)): 
    myList+=a[i],b[i] 

print myList 

這是保證LEN(一)== LEN(B)。

現在我的問題是,我的解決方案很慢,特別是當myString的長度非常大時。 有沒有一種方法來優化?

感謝您的閱讀...

回答

1

希望這個作品更快:

myString = '*.***...***.*.*...***..' 

def intersperse(lst, item): 
    result = [item] * (len(lst) * 2 - 1) 
    result[0::2] = lst 
    return result 

result = [item for item in intersperse(myString.split('.'), '.') if item] 
+0

非常感謝你:-) –

相關問題