一个例子:
eword_list = ["a", "is", "bus", "on", "the"]
alter_the_list("A bus station is where a bus stops A train station is where a train stops On my desk I have a work station", word_list)
print("1.", word_list)
word_list = ["a", 'up', "you", "it", "on", "the", 'is']
alter_the_list("It is up to YOU", word_list)
print("2.", word_list)
word_list = ["easy", "come", "go"]
alter_the_list("Easy come easy go go go", word_list)
print("3.", word_list)
word_list = ["a", "is", "i", "on"]
alter_the_list("", word_list)
print("4.", word_list)
word_list = ["a", "is", "i", "on", "the"]
alter_the_list("May your coffee be strong and your Monday be short", word_list)
print("5.", word_list)
def alter_the_list(text, word_list):
return[text for text in word_list if text in word_list]
我正在尝试删除单词列表中的任何单词,这些单词是文本字符串中的单独单词。在检查单词列表的元素全部是小写之前,应该将文本字符串转换为小写。文本字符串中没有标点符号,并且单词的参数列表中的每个单词都是唯一的。我不知道如何解决它。
输出:
1. ['a', 'is', 'bus', 'on', 'the']
2. ['a', 'up', 'you', 'it', 'on', 'the', 'is']
3. ['easy', 'come', 'go']
4. ['a', 'is', 'i', 'on']
5. ['a', 'is', 'i', 'on', 'the']
预期:
1. ['the']
2. ['a', 'on', 'the']
3. []
4. ['a', 'is', 'i', 'on']
5. ['a', 'is', 'i', 'on', 'the']
答案 0 :(得分:1)
我已经这样做了:
def alter_the_list(text, word_list):
for word in text.lower().split():
if word in word_list:
word_list.remove(word)
text.lower().split()
返回text
中所有以空格分隔的标记的列表。
关键是您需要更改 word_list
。仅返回新的list
是不够的;您必须使用Python 3's list methods来就地修改列表。
答案 1 :(得分:1)
如果结果列表的顺序无关紧要,您可以使用集合:
def alter_the_list(text, word_list):
word_list[:] = set(word_list).difference(text.lower().split())
由于使用word_list
word_list[:] = ...
答案 2 :(得分:0)
<强> 1 强> 你的主要问题是你从函数中返回一个值,然后忽略它。您必须以某种方式保存它才能打印出来,例如:
word_list = ["easy", "come", "go"]
word_out = alter_the_list("Easy come easy go go go", word_list)
print("3.", word_out)
您打印的是原始单词列表,而不是功能结果。
<强> 2 强> 您忽略该函数的 text 参数。您可以在列表推导中将变量名称重用为循环索引。获取不同的变量名称,例如
return[word for word in word_list if word in word_list]
第3 强> 您仍然需要在您构建的列表的逻辑中包含文本。请记住,您正在寻找给定文本中不的单词。
最重要的是,学习基本调试。 查看这个可爱的debug博客以获取帮助。
如果不出意外,请学习使用简单的 print 语句来显示变量的值,并跟踪程序的执行情况。
这会让你走向解决方案吗?
答案 3 :(得分:0)
我更喜欢@Simon的回答,但是如果你想在两个列表推导中做到这一点:
def alter_the_list(text, word_list):
# Pull out all words found in the word list
c = [w for w in word_list for t in text.split() if t == w]
# Find the difference of the two lists
return [w for w in word_list if w not in c]