gpt4 book ai didi

python - 无法弄清楚为什么函数会有这样的行为?

转载 作者:行者123 更新时间:2023-11-30 23:20:27 25 4
gpt4 key购买 nike

我们正在构建一个网络爬虫,任务是创建一个输出关键字和附加到关键字的 url 的函数。列表中的关键字不能重复。这是最终的代码:

index = []
def add_to_index(index,keyword,url):
for entry in index:
if entry[0] == keyword:
entry[1].append(url)
return
index.append([keyword,[url]])

输入:

add_to_index(index,'udacity','http://udacity.com')

add_to_index(index,'computing','http://acm.org')

add_to_index(index,'udacity','http://npr.org')

以下是正确的结果:

[['udacity', ['http://udacity.com', 'http://npr.org']], 

['computing', ['http://acm.org']]]

关于这个功能,有几件事我真的很难理解。第一件事是函数中的哪个位置表示不要重复关键字

据我所知,语句 index.append([keyword,[url]]) 应该将 keyword Udacity 两次添加到 index 列表,事实上,如果我将语句放在 for 循环之上,它确实会添加两次。所以,我真的不明白 for 循环中的哪个位置指定不重复列表中的 keyword

该函数似乎只是在说:如果 keyword 匹配,则将 url 附加到 index 列表,如果不匹配,则退出循环并添加关键字及其url

我真正不明白的第二件事是为什么 index.append([keyword,[url]]) 语句位于 for 循环的底部,而不是高于它。如果我把它放在顶部,它会给我完全不同的结果。此处显示:

index = []
def add_to_index(index,keyword,url):
index.append([keyword,[url]])
for entry in index:
if entry[0] == keyword:
entry[1].append(url)
return



[['udacity', ['http://udacity.com', 'http://udacity.com', 'http://npr.org']],

['computing', ['http://acm.org', 'http://acm.org']],

['udacity', ['http://npr.org']]]
为什么?当该语句位于 for 循环之后时,不会返回任何内容,因为 index 为空。所以,我不明白为什么将语句放在顶部不会产生相同的结果?

我真的很难理解这一点,而且我完全一片空白。任何帮助将非常感激。非常感谢! :)

最佳答案

有一个 return 语句,该语句会导致函数在找到匹配的关键字后退出。这意味着只有当函数在集合中找不到匹配的关键字时,才能执行 index.append([keyword,[url]])

index = []
def add_to_index(index,keyword,url):
for entry in index:
if entry[0] == keyword:
# We have found a matching keyword, so add the url to list of urls and exit the function
entry[1].append(url)
return
# We didn't find a matching keyword so add a new keyword, url list to the collection
index.append([keyword,[url]])

关于python - 无法弄清楚为什么函数会有这样的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com