python - 如果字符串不在一个或多个列表中则引发错误

标签 python list boolean

如果 target_string 没有出现在列表列表的一个或多个列表中,我希望手动引发错误。

if False in [False for lst in lst_of_lsts if target_string not in lst]:
    raise ValueError('One or more lists does not contain "%s"' % (target_string))

肯定有比上面指定的更 Pythonic 的解决方案。

最佳答案

使用all()

if not all(target_string in lst for lst in lst_of_lsts):
    raise ValueError('One or more lists does not contain "%s"' % (target_string))

生成器为每个单独的测试生成 TrueFalse 并且 all() 检查它们是否全部为真。由于我们使用的是生成器,因此评估是惰性的,即在找到第一个 False 时停止而不评估完整列表。

或者,如果同一标签上的双 in 看起来令人困惑,那么人们可能会

if not all((target_string in lst) for lst in lst_of_lsts):
    raise ValueError('One or more lists does not contain "%s"' % (target_string))

但我不太确定是否真的提高了可读性。

关于python - 如果字符串不在一个或多个列表中则引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246467/

相关文章:

python - 将 xml 转换为字典时处理错误

python - 如何使用自定义连接器正确终止 Django 中的 MySQL/MariaDB 连接

python - 嵌套的 Bazel 项目

methods - 空指针异常错误作为方法参数

java递归测试arraylist是否相等

python - 使用python-rsa加密消息时出现溢出异常

Android Button Click Event 在实现带有搜索过滤器的 recyclerview 时被多次触发?

python - 尝试创建一个包含从 infile 到 outfile 的数字的列表

python - 递归修改不规则形状的列表

ios - @(YES) vs [NSNumber numberWithBool :YES]