Python:使用布尔值作为返回值的列表理解

时间:2018-11-12 16:11:22

标签: python python-3.x for-loop if-statement list-comprehension

B是大小为k的二次矩阵。

我尝试了以下代码

if [x for x in range(k) if B[x,1] == 1]:

获得:

对于xrange(k-1)中的第一个B[x,1] == 1,停止for循环并返回true,以便可以执行if语句。如果没有这样的x,则返回false并继续下面的代码。

2 个答案:

答案 0 :(得分:3)

看起来像你想要的any()

if any(B[x,1] == 1 for x in range(k)):

答案 1 :(得分:1)

arshajii's answer可能是正确的,但是如果您还想让第一个x的值满足您的条件,则可以执行以下操作:

try:
    x = next(x for x in range(k) if B[x, 1] == 1)
    # Do something with x
except StopIteration:
    # Do something else

编辑:更好,谢谢@arshajii:

x = next(x for x in range(k) if B[x, 1] == 1, None)
if x is not None:
    # Do something with x
else:
    # Do something else