简体   繁体   English

For 循环不遍历整个列表

[英]For loop not iterating over entire list

I have the following code in Jupyter notebook that prints the radiuslist but only iterates the first result for the resultlist.我在 Jupyter 笔记本中有以下代码,用于打印半径列表但只迭代结果列表的第一个结果。

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)

I appreciate the help!我感谢您的帮助!

You shoul put resultlist = [] and the return statement outside the loop.你应该把resultlist = []和 return 语句放在循环之外。

def areacirclelist(radiuslist):

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

You need to define resultlist = [] outside the for loop.您需要在 for 循环外定义resultlist = [] You're overwriting it every iteration.您每次迭代都会覆盖它。

EDIT: You also need to move the return statement outside the loop.编辑:您还需要将 return 语句移到循环外。

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)

resultlist only contains one number because it is initialized in the for-loop, so it will be set to [] every iteration. resultlist只包含一个数字,因为它是在 for 循环中初始化的,因此每次迭代都会设置为 []。

You can simply fix it by moving the initialization outside the for-loop.您可以通过将初始化移动到 for 循环之外来简单地修复它。

def areacirclelist(radiuslist):
    resultlist = [] # initialize HERE
    for oneradius in radiuslist:
        resultlist.append(math.pi * oneradius * oneradius)
    return resultlist

However, you can write it in a more simple and readable way:但是,您可以用更简单易读的方式编写它:

def areacirclelist(radiuslist):
    return [math.pi * oneradius * oneradius for oneradius in radiuslist]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM