为啥 for 循环不遍历列表中的每个项目?

Posted

技术标签:

【中文标题】为啥 for 循环不遍历列表中的每个项目?【英文标题】:Why is the for loop not iterating over each item in the list?为什么 for 循环不遍历列表中的每个项目? 【发布时间】:2020-01-23 13:23:22 【问题描述】:

for 循环只遍历列表中的第一项。当我使用“打印”语句而不是“返回”时,代码正常运行,但是它在所需输出旁边输出“无”。不知道如何使用返回函数使代码工作。

当前代码 -

def func(num) :
    for x in num:
        return "*"*x




list1 = [3,9,5,2]
print(func(list1))

【问题讨论】:

你想要的输出是什么?首先,不要在 for 循环中写 return 你可能需要return ["*"*x for x in num] return 导致整个函数立即退出,在这种情况下是在第一次迭代之后。 【参考方案1】:

return 退出一个函数,这意味着您在第一次迭代中跳出循环。

如果你想让一个函数“返回”几个值,你可以使用yield(使函数成为generator):

def func(num):
    for x in num:
        yield "*" * x

list1 = [3, 9, 5, 2]
for result in func(list1):
    print(result)

如您所见,您必须迭代函数调用的结果。

【讨论】:

【参考方案2】:

您遇到的问题是,当执行关键字 return 时,return 将立即退出函数,并在其后出现值。因此,当 for 循环开始时,第一次迭代时,您会立即返回值,然后函数退出。如果你想完全返回列表或列表中的值,你应该让函数返回一个数字列表,或者创建一个连接所有值的字符串,然后在 for 循环一直迭代后返回字符串。

【讨论】:

以上是关于为啥 for 循环不遍历列表中的每个项目?的主要内容,如果未能解决你的问题,请参考以下文章

使用 For Each 循环遍历列表时删除列表中的项目

Python:为啥这个 for 循环在第一次迭代后退出?

为啥 Python for 循环在遍历列表副本并进行删除时会跳过元素? [复制]

For循环将列表的所有元素放入不同的文本文件中,而不是在python中遍历每个元素

如何让我的 for 循环遍历列表 test_cases 中的每个数字? [关闭]

Python顶层for循环只运行一次而不是遍历列表