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

时间:2014-02-26 07:07:02

标签: python list

基本问题:

我正在尝试检查此二维列表中的每个元素

board = [['B', 'B', 'B', ' '],['B', 'B', 'B', 'B'],['B', 'B', 'B', 'B']]

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

然后我希望我的函数返回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 

2 个答案:

答案 0 :(得分:5)

使用any

any(' ' in b for b in board)

<强>演示:

>>> 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

in运算符可用于检查项目是否存在于可迭代项中,并且与for循环相比速度非常快。

答案 1 :(得分:0)

要修复代码,请尝试...

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