Python嵌套循环使用报错:'function'对象不可迭代,求排查解决
解决TypeError: 'function' object is not iterable问题
问题重现
你参考的嵌套循环示例代码:
students = [['Igor', 'Sokolov'], ['Riko', 'Miyazaki'], ['Tuva', 'Johansen']] for student in students: for name in student: print(name) print()
你编写的id_validator函数:
def id_validator(verified_ids,feedback_ids): for ids in id_validator: for x in ids: print(x) id_validator([5, 8], [5,8,30,50])
期望输出:
5 8 5 8 30 50
实际报错:TypeError:'function' object is not iterable
问题原因
函数内部的for ids in id_validator是错误的:这里的id_validator是你定义的函数对象,而不是传入的参数。函数本身不能被迭代,因此触发类型错误。
解决方案
把传入的两个参数verified_ids和feedback_ids组合成一个可迭代的列表,作为外层循环的遍历对象:
修正后的代码
def id_validator(verified_ids, feedback_ids): # 将两个输入参数封装为列表,作为外层循环的迭代源 for ids in [verified_ids, feedback_ids]: for x in ids: print(x) id_validator([5, 8], [5,8,30,50])
运行后会输出你期望的结果:
5 8 5 8 30 50
进阶优化(支持任意数量的输入序列)
如果需要处理更多输入参数,可以使用可变参数*args,让函数更灵活:
def id_validator(*args): # args会接收所有传入的位置参数,组成一个元组 for ids in args: for x in ids: print(x) # 可以传入任意数量的序列 id_validator([5, 8], [5,8,30,50]) # 也可以这样调用:id_validator([1,2], [3,4], [5,6,7])
内容的提问来源于stack exchange,提问作者gizem kurşova
相关产品推荐
相关产品推荐

