Python使用filter配合lambda筛选可整除数字时出现filter预期2参数仅得1错误
报错排查与解决
报错原因
filter()函数要求传入2个参数:第一个是判断用的函数,第二个是待筛选的可迭代对象。你的代码存在括号配对错误:把filter的第二个参数my_list、额外传入的a都写在了lambda定义的小括号内部,最终filter只拿到了1个参数,触发TypeError。
同时你给lambda额外定义了不必要的a参数:a已经在外部作用域定义完成,lambda可以直接读取使用,不需要作为参数传入。
修正后的代码
my_list = [11, 12, 15, 3, 6, 33, 58] a = int(input("Enter number by which we'll divide: ")) # 修正括号位置,去掉lambda多余的a参数 divs = list(filter(lambda x: x%a == 0, my_list)) print("Divisible numbers are: ", divs)
验证逻辑
运行代码后输入测试值,比如输入3,会输出Divisible numbers are: [12, 15, 3, 6, 33],符合筛选预期。
内容的提问来源于stack exchange,提问作者Abdul
相关产品推荐
相关产品推荐

