基本问题:
我试图检查这个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)
用途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循环.