python - 如何检查列表 'a' 中的元素是否满足列表 'b' 中的条件?

标签 python python-3.x list list-comprehension

我有一个数字列表:

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/

相关文章:

python-3.x - 在 python3 上的 DataFrame 中标记假期

python - 如何获取元组列表并将元组从字符串更改为整数

python - 如何将Python中的二维列表导出到excel?

python - 将文本添加到 matplotlib 绘图时自动调整绘图限制

python - 如何重写 django Rest 框架 ModelViewSet 的创建操作来创建批量记录?

python - 在类级别使用装饰器注册方法

java - 在 Java 中从行集创建树的最佳方法

Python正则表达式适用于开头匹配,但不适用于结尾匹配

python - python 项目的 sonarqube 没有显示任何测试覆盖率

python - 对行值等于标题的列求和 - Pandas