2014-02-09 40 views
2

我如何拆分python 2.7.5+ split list ['a','xxx yyy zzz']成列表['a','xxx','yyy','zzz']如何?

list = ['a', 'xxx yyy zzz'] 

list = ['a', 'xxx', 'yyy', 'zzz'] 
在Python

2.7.5+(默認情況下,2013年9月19日,13時48分49秒)[GCC 4.8.1]上linux2上的)?

它試圖與

... 
for i in range(0, len(list)): 
    list[i] = list[i].split(' ') 
... 

,但沒有結果。

+0

究竟是什麼爲標準分裂?分割空白?分成3個或更少字符的部分? ... –

+0

嗨盧卡斯。它正在分裂之間的空間。字符串xxx和字符串yyy。感謝您的反應;-) – user1614113

回答

0
>>> [word for s in L for word in s.split()] 
['a', 'xxx', 'yyy', 'zzz'] 
3

一個快速和骯髒的方法是:

l = ['a', 'xxx yyy zzz'] 
l = " ".join(l).split() 

一個更好的是:

l = ['a', 'xxx yyy zzz'] 
l = sum((s.split() for s in l), []) 
4

你可以用列表理解去做,這樣

my_list = ['a', 'xxx yyy zzz'] 
print [word for words in my_list for word in words.split()] 

輸出

['a', 'xxx', 'yyy', 'zzz'] 

建議:因爲它屏蔽了該內建list功能決不命名變量list

+0

剛剛在問題的上下文中將其命名爲「list」;-)不要擔心,我不會在真實代碼中執行此操作。謝謝你的反應。 – user1614113

+1

@ user1614113很高興你已經知道:)請考慮[接受此答案](http://meta.stackexchange.com/a/5235/235416)如果它可以幫助你。 – thefourtheye

3

map和不受約束的方法str.split另一種解決方案:

>>> lst = ['a', 'xxx yyy zzz'] 
>>> sum(map(str.split, lst), []) 
['a', 'xxx', 'yyy', 'zzz'] 

>>> from itertools import chain 
>>> list(chain.from_iterable(map(str.split, lst))) 
['a', 'xxx', 'yyy', 'zzz'] 
+0

使用地圖+1 – Isaac

相關問題