Mic*_*udl 4 python boolean list
如果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))
Run Code Online (Sandbox Code Playgroud)
当然,有一个比上面指定的更多的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))
Run Code Online (Sandbox Code Playgroud)
生成器产生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))
Run Code Online (Sandbox Code Playgroud)
但我不太确定实际上会增加可读性.