努力的小mou 发表于 2021-1-17 16:55:44

请问这个报错原因是为啥呀

list (filter(lambdax: x%2,range(10)))

在IDLE里面运行,总是提醒冒号那错误
已经确认是用的英文输入格式
菜鸟寻求帮助

另外,range(10),最后运算出来的结果为什么是1.3.5.7.9啊?
为啥不是1.3.5 呢?
range(10)难道不是用1-10的数去除以2吗?

Daniel_Zhang 发表于 2021-1-17 17:05:20

本帖最后由 Daniel_Zhang 于 2021-1-17 17:10 编辑

lambda x 不是 lambdax

建议楼主重新学习一下 filter 和 %

filter是当满足条件为True时被扔出来

x%2表示 x 除以 2 后的余数

比如 7 % 2 = 1

1 为 True, 0 为 False

所以,扔出来的当然是 1 3 5 7 9

另外,你可以尝试一下 list(range(10))

或者

for each in range(10):
        print(each)

看看出来的是 1-10 还是 0-9

suchocolate 发表于 2021-1-17 17:05:41

%: 求于
/ : 除以

昨非 发表于 2021-1-17 17:09:07

本帖最后由 昨非 于 2021-1-17 17:12 编辑

首先,你的lambda后面少了个空格
其次:
filter会过滤掉其参数内不是true(1)的部分,
在filter内是一个lambda表达式
它的值是range(10)内的x%2
【x%2并不是除以二,而是对二取余数,也就是除以二的余数】
解和filter的性质,这一语句就会过滤掉range(10)中,取余二为0的部分(也就是偶数)
剩下的就是0到9中的奇数部分,转化为列表
页: [1]
查看完整版本: 请问这个报错原因是为啥呀