2015-02-24 4 views
0

Я следующий список списков, в результате после tokenizing:Python: NLTK: элемент доступа списка списка

[['Who', 'are', 'you', '?'], 
['I', 'do', 'not', 'know', 'who', 'you', 'are'], 
['What', 'is', 'your', 'name', '?']] 

Теперь я хотел бы иметь список, содержащий «простые» элементы, например:

['Who','are','you','?','I','do','not','know','who'...] 

Я уже попробовал все, что я мог думать, используя (вложенный) для петель, (вложенный) в то время как петля ... Я либо получить список ['Who','Who','Who',...] (и так далее) или я "list index out of range".

Может кто-нибудь, пожалуйста, помогите мне? Спасибо!

+0

Другими словами, вы хотите сгладить список списков? См. [Этот связанный вопрос] (http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python), или в вашем более простом случае, просто 'sum (lst, []) ' –

+0

Возможный дубликат [сгладить (нерегулярный) список списков в Python] (http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python). – JNevens

+0

Возможный дубликат [понимание вложенного списка python] (http://stackoverflow.com/questions/18072759/python-nested-list-comprehension) – Aprillion

ответ

0

Вы можете просто использовать функцию extend в питона

In [1]: a= [['Who', 'are', 'you', '?'], ['I', 'do', 'not', 'know', 'who', 'you', 'are'], ['What', 'is', 'your', 'name', '?']] 
In [2]: b = [] 
In [3]: for list_ in a: 
    b.extend(list_) 
    ...:  

In [4]: b 
Out[4]: ['Who','are','you','?','I','do', ...] 
+0

Спасибо, работал как шарм! – thesisstudent

0

Вы хотите объединить список?

flat_list = [] 
for list_item in nested_list: 
    flat_list += list_item 

>>flat_list 
>>['Who', 'are', 'you', '?', 'I', 'do', 'not', 'know', 'who', 'you', 'are', 'What', 'is', 'your', 'name', '?'] 

Возможный дубликат можно посмотреть here

1

вы можете попробовать это

Python> = 2,6, используйте itertools.chain.from_iterable(), который не требует распаковки списка:

>>> import itertools 
>>> list2d = [["who", "are", "you", "?"]....] 
>>> merged = list(itertools.chain.from_iterable(list2d)) 
0

просто для записи, когда вы видите другие ответы, более питоническим способом является использование nested list comprehension, например:

original_list = [[1], [2, 3]] 
flat_list = [i for sublist in original_list for i in sublist] 
Смежные вопросы