想定义一个函数: 输入上限和下限,能筛选出数据组中的值。
data=[5,6,7,8,9]
def factor_value(a,b):
for a,b in data:
if a < data
elif b > data
return a+b
factor_value(4,10)
我的思路是 a、b 值遍历 data 后判断大小。 返回的是 if a < data 语法错误。
本人初学,思路和语法基础比较薄弱。求大神帮忙,写一个做参考,或者给一点思路,小弟感激不尽
1
264768502 2018-01-07 20:59:00 +08:00 via iPad 1
[d for d in data if a < d < b]
|
2
Nugine 2018-01-07 21:14:39 +08:00 via Android 1
不太明白你的意思,是筛选出数字列表中属于区间(a,b)的数字吗?
那么可以用列表推导式:[x for x in data if a<x<b] 匿名函数 lambda a,b,data:[x for x in data if a<x<b] 写成函数就是 def filter_data(a,b,data): return [x for x in data if a<x<b] 用高阶函数 filter: def filter_data(a,b,data): return filter(lambda x:a<x<b,data) |
3
Kilerd 2018-01-07 22:36:48 +08:00
lambda a, b, data: filter(lambda x: a<x<b, data)
最简单的写法,千万不要这么写,会被人打死的。 |
4
IanPeverell 2018-01-08 01:27:34 +08:00 1
[d for d in data if a < d < b] 是 python 中一种 List Comprehensions,可以参考 https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
这种写法比较 pythonic 一些 |