删除列表python中的元素

删除列表python中的元素,python,list,Python,List,假设我的程序中有一个输入,用户在其中编写文本。我将此文本保存为长字符串,然后通过split()函数将其转换为包含所有单词的列表 我还有一个列表,其中有几个单词作为元素。如果此列表中的单词存在于第一个列表中,则应删除第一个列表中的单词。我如何编写代码 我使用了.remove()-函数,但是如果单词在不同的位置出现两次,则只有第一次被删除…您可以使用列表理解来过滤单词,如下所示 list1, rep = "Welcome to Stack Overflow, to learn".split(), "

假设我的程序中有一个输入,用户在其中编写文本。我将此文本保存为长字符串,然后通过split()函数将其转换为包含所有单词的列表

我还有一个列表,其中有几个单词作为元素。如果此列表中的单词存在于第一个列表中,则应删除第一个列表中的单词。我如何编写代码


我使用了.remove()-函数,但是如果单词在不同的位置出现两次,则只有第一次被删除…

您可以使用列表理解来过滤单词,如下所示

list1, rep = "Welcome to Stack Overflow, to learn".split(), "to"
list1 = [word for word in list1 if word != rep]
print list1
list1 = filter(lambda word: word != rep, list1)
list1, words = "Welcome to Stack Overflow, to learn".split(), {"to", "Stack"}
list1 = [word for word in list1 if word not in words]
或者您可以使用
filter
函数,如下所示

list1, rep = "Welcome to Stack Overflow, to learn".split(), "to"
list1 = [word for word in list1 if word != rep]
print list1
list1 = filter(lambda word: word != rep, list1)
list1, words = "Welcome to Stack Overflow, to learn".split(), {"to", "Stack"}
list1 = [word for word in list1 if word not in words]
如果你想删除所有不需要的单词,你可以这样做

list1, rep = "Welcome to Stack Overflow, to learn".split(), "to"
list1 = [word for word in list1 if word != rep]
print list1
list1 = filter(lambda word: word != rep, list1)
list1, words = "Welcome to Stack Overflow, to learn".split(), {"to", "Stack"}
list1 = [word for word in list1 if word not in words]
如果要保留相同的列表对象:

l[:] = (w for w in l if w not in words)
否则,您可以使用简单的列表理解:

l = [w for w in l if w not in words]
或使用过滤器:

l = list(filter(lambda w: w not in words, l))
或:


这里的问题是,我想删除的单词后面是否跟有,或。或或它不会被删除。我该怎么修理this@user3141639那么您可能需要使用正则表达式。那么这些符号应该从列表的开头删除?您上面的示例是否只适用于字符串“to”?我怎样才能在已经准备好的列表中使用rep这个词呢deleted@user3141639您最初的问题只说明了一个单词:(谢谢,它几乎完美地工作了。我现在唯一的问题是,如果单词中的单词在a、or、or、or后面,它将不会被删除,因为第一个列表中的实际字符串将被删除“超级”还是“酷?"。您建议如何处理此问题?我是否应该在程序的早期阶段尝试直接删除这些?如果我理解正确,您可以尝试使用regexp替换。或者在进行比较时删除标点符号。如果您可以提供实际输入和预期输出,则会更容易。我无法发布代码di很遗憾,这里直截了当。我可以试着澄清我的意思。我有一个程序,它以书面文本作为输入。让我们说文本是:“我的酷兄弟真的很酷。他喜欢酷的苹果。你认为这很酷吗?”因为我的任务是用文本做一些计算(字数/字数等)我为此字符串制作了两个列表。一个是在.or!或?处拆分字符串。另一个是在空格处拆分字符串以分隔每个单词。现在的问题是,当用空格分隔时,.or!或?紧跟在字符串后面。因此在空格处拆分的列表是。list=[“My”,“Cool”,“brother”,“is”,“really”,“Cool.”因此,每次一个句子结束时,后面都跟着。/!/?号。由于我的其他列表中应该删除的单词是我上面打印的列表,所以当我想删除单词“cool”时会出现问题。