首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >For循环不会遍历整个列表

For循环不会遍历整个列表
EN

Stack Overflow用户
提问于 2020-10-15 06:54:52
回答 3查看 47关注 0票数 0

我在Jupyter notebook中有以下代码,它打印radiuslist,但只迭代结果列表的第一个结果。

代码语言:javascript
运行
复制
def areacirclelist(radiuslist):

    for oneradius in radiuslist:
        resultlist = []
        resultlist.append(math.pi*oneradius*oneradius)
        return resultlist

radiuslist = [1,2,4,8,21,80]

arealist = areacirclelist(radiuslist)
print ('For the circle with radii of ', radiuslist, 'the areas are', arealist)

非常感谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2020-10-15 10:01:18

你应该把resultlist = []和返回语句放在循环之外。

代码语言:javascript
运行
复制
def areacirclelist(radiuslist):

    resultlist = []
    for oneradius in radiuslist:
        resultlist.append(math.pi*oneradius*oneradius)
    return resultlist
票数 1
EN

Stack Overflow用户

发布于 2020-10-15 06:57:27

您需要在for循环之外定义resultlist = []。你会在每次迭代中覆盖它。

编辑:您还需要将返回语句移出循环。

代码语言:javascript
运行
复制
def areacirclelist(radiuslist):
    resultlist = []
    for oneradius in radiuslist:
        resultlist.append(math.pi * oneradius * oneradius)
    return resultlist


radiuslist = [1, 2, 4, 8, 21, 80]

arealist = areacirclelist(radiuslist)
print('For the circle with radii of ', radiuslist, 'the areas are', arealist)
票数 0
EN

Stack Overflow用户

发布于 2020-10-15 10:12:50

resultlist只包含一个数字,因为它是在for循环中初始化的,所以每次迭代都会将其设置为[]。

您可以通过将初始化移到for循环之外来简单地修复它。

代码语言:javascript
运行
复制
def areacirclelist(radiuslist):
    resultlist = [] # initialize HERE
    for oneradius in radiuslist:
        resultlist.append(math.pi * oneradius * oneradius)
    return resultlist

但是,您可以用一种更简单、更易读的方式来编写它:

代码语言:javascript
运行
复制
def areacirclelist(radiuslist):
    return [math.pi * oneradius * oneradius for oneradius in radiuslist]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64362583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档