|
|
2鱼币
- [ i for i in range(1, 100) if not(i%3)]
复制代码
这个列表推导式看的不是很明白,请详细讲解一下
- def make_repeat(n):
- return lambda s : s * n
- double = make_repeat(2)
- print(double(8))
- print(double('FishC'))
复制代码
为什么两个print函数里的double后面的参数可以传给s呢?
- lambda x : x if x % 2 else None
复制代码
不写else部分,函数判if为false后能返回none么?
第一个问题,你可以把 if not(i%3)去掉后,再观察一下可能比较好理解not(i%3)的意思,rang(1,100)指得是1-99这个数字范围,最开头的i只是语法需要,可以理解成定义一个参数i。如果去掉的话会报错,百度翻译过来就是:查询语法无效。
第二个问题,double = make_repeat(2) 这里实际上是你上课没有认真听,这样操作后,double实际上已经成为了一个函数,你可以产生打印一下。函数double(s)传递的当然是参数s,这个make_repeat()()也是同样的道理。
第三个问题, lambda 是匿名函数 而后面的 x if x%2 else None 是一个类似于三元表达式的固定语法格式,是不能 去掉else 去掉就报错了 这跟 b = x if 2>3 else y 一个道理。
|
最佳答案
查看完整内容
第一个问题,你可以把 if not(i%3)去掉后,再观察一下可能比较好理解not(i%3)的意思,rang(1,100)指得是1-99这个数字范围,最开头的i只是语法需要,可以理解成定义一个参数i。如果去掉的话会报错,百度翻译过来就是:查询语法无效。
第二个问题,double = make_repeat(2) 这里实际上是你上课没有认真听,这样操作后,double实际上已经成为了一个函数,你可以产生打印一下。函数double(s)传递的当然是参数s,这个make_repeat()() ...
|