检查列表是否包含另一个列表中存在的所有类型的元素

阿什利

我有两个Python列表:componentssignature我想检查签名列出的所有类型是否都至少与组件列表中的元素之一匹配。

在这里,签名匹配的组件列表,因为那里既是字符串,并以浮动组件

signature = [float, str]
components = [1.0, [], 'hello', 1]

此处,签名 components不匹配,因为没有列表类型。

signature = [float, list]
components = ['apple', 1.0]

如何在Python 3中表达这种情况?

Moinuddin的照片

您可以结合使用all()any()嵌套生成器表达式来实现此目的。在这里我使用的isinstance()检查每一个typesignature在对象列表中匹配components列表。使用此功能,您的自定义函数将为:

def check_match(signature, components):
    return all(any(isinstance(c, s) for c in components) for s in signature)

样品运行:

# Example 1: Condition is matched - returns `True`
>>> signature = [str, int]
>>> components = [1, 'hello', []]
>>> check_match(signature, components)
True

# Example 2: Condition is not matched - returns `False`
>>> signature = [float, list]
>>> components = ['apple', 1.0]
>>> check_match(signature, components)
False

说明:上面的嵌套生成器表达式由两部分组成。第一部分是:

all(...`any()` call... for s in signature)

在这里,我正在迭代signature列表以使其中包含每个元素s仅当所有逻辑都all()将返回True时才...any() call...返回True否则它将返回False

其次是...any() call...生成器表达式为:

any(isinstance(c, s) for c in components)

在这里,每个元素ccomponents列表中,我检查的类型是否cs从外部产生理解。如果任何类型匹配,any(..)将返回True如果不c符合条件,any(...)将返回False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查另一个列表中列表的所有三个元素是否存在

检查列表是否包含另一个列表中的所有项目

如何检查列表中的所有元素是否都在另一个列表中?

如何检查列表列表的任何元素是否包含另一个列表的所有元素?

如何检查一个列表是否包含另一个列表的所有元素,包括重复项

检查列表元素是否包含另一个列表的所有元素的有效方法

检查一个列表是否包含另一个列表中的元素

检查列表列表的所有元素是否在另一个列表列表Python中

如何检查一个列表中的所有元素是否是Prolog中另一个列表的成员

检查列表列表中的元素是否包含另一个列表

检查列表数组是否包含另一个列表中的元素

检查一个列表的每个元素是否是另一个列表的所有元素的倍数

如何检查元组或列表中的所有元素是否都在另一个元素中?

如何找到该列表包含另一个列表中的所有元素?

检查一个列表是否包含另一个列表的元素

如何检查列表的所有值是否在另一个列表python中

如何检查列表列表是否包含来自另一个列表的任何元素

检查列表的所有元素是否都以另一个列表的所有不同符号开头

检查数组的所有元素是否包含在另一个数组中

检查Vec是否包含另一个Vec中的所有元素

如何检查一个列表中是否存在另一个列表中没有的项目?

如果条件检查一个列表的所有值是否存在于另一个列表中

检查一个列表项是否包含在另一个列表中

如何检查另一个列表中是否存在包含一系列项目的列表

如何在 Python 中检查列表的每个元素,是否包含在另一个列表中?

Prolog检查列表是否包含另一个列表元素的2倍

如何检查 Python 列表是否包含另一个列表的元素重复未被忽略

如何基于另一个列表中不存在的属性的所有元素

检查所有列值是否在另一个列表中