将列表元素拆分为另一个列表中的单个单个元素

时间:2017-09-27 11:52:25

标签: python python-3.x

目前我有两个列表,ListofComments和ListofWords。 ListofComments在其元素中有许多单词。例如。 ListofComments [0] ='我爱蟒蛇' ListofComments [1] ='我讨厌python' 但是目前我只能将它分成单个单词,用于ListofComments的最后一个元素。以下是我目前的情况。

 for x in range(0, 58196):
    ListofWords = (re.sub("[^\w]", " ", ListofComments[x]).split())

我明白可能需要另一个循环,但我无法确切地指出如何解决这个问题。欲望输出将是这些ListofWords [0] ='我'ListofWords [1] ='爱'ListofWords [2] ='python'ListofWords [3] ='我'LstofWords [4] ='讨厌'ListofWords [5] ] ='python'

3 个答案:

答案 0 :(得分:0)

我相信你唯一的问题是你在每次循环迭代时都会覆盖你的ListofWords,因此为什么在循环结束时你只能看到ListofComments的最后一个元素的单词。 / p>

试试这个:

ListofWords = []
for x in range(0, 58196):
    ListofWords.extend(re.sub("[^\w]", " ", ListofComments[x]).split())

编辑:

正如其他人所说,您要确保避免list out of range错误。我并不想改变你的其余代码,只是为了明确必须改变的内容,让它按照你的预期工作。 编写上述内容的更简单(也更强大)的方法是:

ListofWords = []
for comment in ListofComments:
    ListofWords.extend(re.sub("[^\w]", " ", comment).split())

答案 1 :(得分:0)

如果我理解得好,这将解决您的问题:

list_of_words = []
my_list = ["i love python3", "i hate python2"]

for sentence in my_list:
    words = sentence.split(" ")
    for word in words:
        list_of_words.append(word)

答案 2 :(得分:0)

您的解决方案有两个问题:

  • ListofWords在每次迭代时都会被覆盖
  • 你可能会超出范围

这是我的解决方案

from functools import reduce

# split comments
split_comments = [re.sub("[^\w]", " ", c).split() for c in ListofComments]
# >>> [['I', 'love', 'python'], ['I', 'hate', 'python']]

# flatten list of lists
reduce(lambda x, y: x + y, split_comments)
# >>> ['I', 'love', 'python', 'I', 'hate', 'python']