Как я могу разделить эти списки в списке, используя для цикла в одну строку? - PullRequest
0 голосов
/ 09 октября 2018

Я хочу, чтобы список сгладил ([[list1], [list2], [list3] ....]) из панд

Может кто-нибудь сказать мне, как сделать 'для цикла' в одну строку?Спасибо (есть ли другой способ решить эту проблему?)

words = []
for sent in train['tokenize']:
    words += sent

Я хочу получить результат [[list1], [list2], [list3]] >> [list1, list2, list3]

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Вы можете использовать functools & operator, использовать [[1,2,3], [4,6], [7,8,9,8]] в качестве примера, он выбирает каждый подсписок из вложенного списка и складывает их вместе, чтобы сформировать одномерный список.

import operator  
from functools import reduce  
a = [[1, 2, 3], [4, 6], [7, 8, 9, 8]]  
print(reduce(operator.add, a))  

Вывод:

[1, 2, 3, 4, 6, 7, 8, 9, 8]

0 голосов
/ 09 октября 2018

Вы можете просто добавить все списки на

a = [[1, 2, 3], [4, 6], [7, 8, 9, 8]]  
sum(a,[])

Out:

[1, 2, 3, 4, 6, 7, 8, 9, 8]

​
0 голосов
/ 09 октября 2018

Использование list comprehension:

words = [a for sub in train['tokenize'] for a in sub]

Или chain.from_iterable:

from  itertools import chain
words = list(chain.from_iterable(train['tokenize']))

Образец :

train = pd.DataFrame({'tokenize':[['a','s','d'],['ss','dd'],['aa','ss','dd']]})
print (train)
       tokenize
0     [a, s, d]
1      [ss, dd]
2  [aa, ss, dd]

words = [a for sub in train['tokenize'] for a in sub]
print (words)
['a', 's', 'd', 'ss', 'dd', 'aa', 'ss', 'dd']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...