检查二维列表中的每个元素

use*_*863 4 python list

基本问题:

我试图检查这个2d列表中的每个元素

board = [['B', 'B', 'B', ' '],['B', 'B', 'B', 'B'],['B', 'B', 'B', 'B']]
Run Code Online (Sandbox Code Playgroud)

如果至少有一个元素== ' '

然后我想让我的函数返回True,否则如果它们都没有' '返回False.

这是我到目前为止,但它在循环的第一次迭代停止,认为字符串中的第一个元素是B然后将返回False而不会到达第一个列表的第4个元素.

for i in range(len(b)):
    for i in range(len(b[1])):
        if b[i][i] == ' ':
            return True

        else:
            return False 
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 5

用途any:

any(' ' in b for b in board)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> board = [['B', 'B', 'B', ' '],['B', 'B', 'B', 'B'],['B', 'B', 'B', 'B']]
>>> any(' ' in b for b in board)
True
>>> any(' ' in b for b in board[1:])
False
Run Code Online (Sandbox Code Playgroud)

in运营商可以用来检查物品是否存在于一个可迭代或没有,这是非常快相比for循环.