标题有点误导,但相关。
考虑以下代码:
def add_page_to_index(index, url, content):
words = content.split()
for word in words:
add_to_index(index, word, url)
我想将for循环更改为类似于此的东西:
[add_to_index(index, word, url) for word in words]
我很确定上面这行不会起作用,并且可能让人感到恐惧,但是,我认为它给出了我想要实现的目标。我想在这里使用map()函数,但我无法看到如何使用map(),因为args'index'或'url'都不会改变(它们不是序列),只有'word在单词'将提供函数的序列。那么我的问题是,如果可能的话,我如何在这里使用地图功能。另外,关于我上面的(可能是令人讨厌的)代码行,我怎么能让这样的行工作...我猜我可以把它变成列表理解如果我把它分配给一个名字,但那不会在这种情况下真的有意义。
答案 0 :(得分:3)
你的行实际上会工作并且具有正确的副作用,只有代码的 intent 会出错,因为列表推导通常用于转换列表,而不是将函数应用于每个元素
即,
def add_page_to_index(index, url, content):
[add_to_index(index, word, url) for word in content.split()]
是对你所拥有的有效的重新实现,但是,由于没有使用理解的结果,所以它并不简单。
如果您正在尝试学习如何使用地图功能,以下是您可能正在寻找的内容:
def add_page_to_index(index, url, content):
words = content.split()
map(lambda word: add_to_index(index, word, url), words)
然而,如果你只是忽略了结果,我会选择你原来的for循环。更明确的是,任务是必要的,而不是变革性的。