如果 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))
生成器为每个单独的测试生成 True
或 False
并且 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/