为啥 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 循环不遍历列表中的每个项目?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Python for 循环在遍历列表副本并进行删除时会跳过元素? [复制]
For循环将列表的所有元素放入不同的文本文件中,而不是在python中遍历每个元素