运行 当布尔条件为真时循环

run while loop while a boolean condition is true

我有一个 2D numpy 数组 (400x400),虽然这个数组中有零,但我想 运行 一个 while 循环,直到经过几次迭代后它们都被删除。所以在 while 块中,我在每次迭代中删除了一些零。从 我剪下代码以检查我的数组中是否还有零:

check = 0 in array

这个 returns 一个 'True' 或一个 'False' 并且正在工作。现在我想在 while 循环的开头使用它,我希望它像下面这样工作:

while 0 in array == True:
    'do sth.'

相反,我收到以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我可以做一个解决方法,在每个 while 循环的末尾我将 'check = 0 in array' 的结果写入另一个变量并在 while 循环的开头检查这个变量,但我认为应该有更好的方法。

如果我没看错你的问题,这就是你想要的:

array = [[20,0],[11, 1]]
count = 0 
while count < len(array): 
    if 0 in array[count]: 
        print("Found zero")
    count += 1

输出:

[20, 0]
Found zero
[11, 1]

Python 将其解析为

while 0 in (array==True):

当然是指哪里

while (0 in array) == True:

不过当然写得更好

while 0 in array:

Python 的流控制条件已经隐式地将每个表达式转换为 "truthiness" 值,即 TrueFalse。进一步了解