如何从for循环返回每个值

 曹莹888淑女 发布于 2023-02-11 13:39

(使用python 3.3.2)嗨,我正在尝试为文本云创建一个爬行函数,它将进入一个链接列表,理想情况下返回该列表中每个元素的函数输出列表.但是,我坚持使用打印功能,打印(b),而不是实际返回我想要的.在我的for循环中,我如何从print(b)语句中返回所有内容.它可以都在一个列表中或以某种方式编译.谢谢:) tl; dr:我如何返回从for循环获得的所有东西

def crawl():
    linkList = inputFunction()[1:][0] #makes a list of a bunch of URL's
    for i in range(len(linkList)):
        print(i)
        t = getHTML(linkList[i]) #getHTML returns tuple of text in the input URL
        alreadyCrawl = alreadyCrawl + list(linkList[i]) #ignore this
        t = list(t)
        b = counting(t) #makes dictionary of word counts
        print(b) 
    return

Hyperboreus.. 8

要么将它们放在列表中并在结尾处返回列表,要么"屈服"它们(因此创建一个生成器).

第一种方式:

def f():
    acc = []
    for x in range(10):
        acc.append(someFunctionOfX(x))
    return acc

第二种方式:

def g():
    for x in range(10):
       yield someFunctionOfX(x)

也许最重要的区别如下:如果someFunctionOfX在示例1中任何调用导致异常,该函数将不返回任何内容.在示例2中,如果让我们说由于某种原因无法产生第5个值,则前面的四个已经被放弃并且可能在调用者的上下文中使用.

在这里你可以看到差异:

def f():
    acc = []
    for x in range(-3, 4):
        acc.append (2 / x)
    return acc

def g():
    for x in range(-3, 4):
        yield 2 / x

def testF():
    for x in f(): print(x)

def testG():
    for x in g(): print(x)

调用testF简单失败(ZeroDivisionError:除以零)并且不打印任何内容.调用testG打印件

-0.6666666666666666
-1.0
-2.0

然后失败(ZeroDivisionError:除以零).


返回列表或产生值的我(非常个人)标准如下:如果我需要存储在某处的数据,我会返回一个列表.如果我只需要处理每个成员,我就会产生它们.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有