if False in (self.is_legal(l), self.is_legal(u), self.is_legal(r), self.is_legal(d)):
if {False} <= {self.is_legal(l), self.is_legal(u), self.is_legal(r)}:
进一步扩展这个想法:
if {False} <= {self.is_legal(var) for var in (l, u, r, d)}:
或者利用一个空的列表或集合或任何虚假的事实:
if [var for var in (l, u, r, d) if self.is_legal(var) is False]:
可以使用^{} 和generator expression:
或者,如果您喜欢^{} 而不是
any
:不过,第一种解决方案似乎读起来更好一些。你知道吗
至于为什么您尝试的解决方案不起作用,Python中的
or
操作符的行为与您认为的不同。从docs:因此,
self.is_legal(l or r or d or u)
只是将第一个truthy值传递给self.is_legal
方法,而不是全部传递给它们。你知道吗可以使用元组或集合:
进一步扩展这个想法:
或者利用一个空的列表或集合或任何虚假的事实:
我想这完全取决于你认为什么是“漂亮的”。你知道吗
Python中的空列表为false。你知道吗
您可以生成一个包含理解和条件的空列表,如下所示:
相关问题 更多 >
编程相关推荐