基本问题:
我正在尝试检查此二维列表中的每个元素
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
答案 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