带走list python中的元素

时间:2013-12-28 10:07:23

标签: python list

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

我还有一个列表,其中包含多个单词作为元素。如果此列表中的单词存在于第一个列表中,则应在第一个列表中删除单词。我该如何编码呢?​​

我使用.remove() - 函数,但是如果单词在不同的地方出现两次,则只删除第一个...

2 个答案:

答案 0 :(得分:2)

您可以使用list comprehention来过滤掉单词,就像这样

list1, rep = "Welcome to Stack Overflow, to learn".split(), "to"
list1 = [word for word in list1 if word != rep]
print list1

或者你可以使用filter功能,就像这样

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]

答案 1 :(得分:0)

l = ["A", "super", "cool", "list", "of", "words"]
words = ["list", "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))

或者:

l[:] = filter(lambda w: w not in words, l)