Как получить вложенный список, вставляя слова внутри вложенных списков?

#python #list #for-loop #nested-lists #stemming

#питон #Список #для-петли #вложенные списки #вытекающий

Вопрос:

У меня есть список Python с несколькими вложенными списками, содержащими токены в качестве tokens . Я хочу поместить в него токены, чтобы результат был таким stemmed_expected .

 tokens = [['cooked', 'lovely','baked'],['hotel', 'going','liked'],['room','looking']]  stemmed_expected: [['cook', 'love','bake'],['hotel', 'go','like'],['room','look']]  

Цикл for, который я попробовал, выглядит следующим образом:

 from nltk.stem import PorterStemmer  ps = PorterStemmer()  stemmed_actual = []  for m in tokens:  for word in m:  word = ps.stem(word)  stemmed_actual.append(word)  

Но вывод этого цикла for таков:

 stemmed_actual = ['cook', 'love', 'bake', 'hotel', 'go', 'like', 'room', 'look']  

Как я могу изменить цикл for, чтобы получить исходные слова в вложенных списках в том виде, в каком они есть stemmed_expected ?

Ответ №1:

Вы можете использовать понимание вложенных списков:

 from nltk.stem import PorterStemmer  tokens = [['cooked', 'lovely','baked'],['hotel', 'going','liked'],['room','looking']]  ps = PorterStemmer() stemmed = [[ps.stem(word) for word in sublst] for sublst in tokens]  print(stemmed) # [['cook', 'love', 'bake'], ['hotel', 'go', 'like'], ['room', 'look']]