我有一个数字列表:
a = [3, 6, 20, 24, 36, 92, 130]
以及条件的列表:
b = ["2", "5", "20", "range(50,100)", ">120"]
我想检查'a'中的数字是否满足'b'中的条件之一,如果是,则将这些数字放入列表'c'中
在上面的例子中:
c = [20, 92, 130]
我创建了这段代码,似乎在做我想做的事:
c = []
for x in a:
for y in b:
if "range" in y:
rangelist = list(eval(y))
if x in rangelist:
c.append(x)
elif ">" in y or "<" in y:
if eval(str(x) + y):
c.append(x)
else:
if x == eval(y):
c.append(x)
但是我的列表“a”可能非常大。
有没有更简单快捷的方法来获得我想要的东西?
最佳答案
根据 @user2357112 的建议,您可以为所有条件创建一个函数列表,然后将每个数字传递给每个函数以确定该数字是否满足任何条件。
In [1]: a = [3, 6, 20, 24, 36, 92, 130]
In [2]: conditions = [lambda x:x==2, lambda x:x==5, lambda x:x==20, lambda x: x in range(50, 100), lambda x: x > 120] # List of lambda functions
In [3]: output = list()
In [4]: for number in a:
...: if any(func(number) for func in conditions): # Check if the number satisfies any of the given conditions by passing the number as an argument to each function
...: output.append(number)
In [5]: output
Out[5]: [20, 92, 130]
关于python - 如何检查列表 'a' 中的元素是否满足列表 'b' 中的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494385/