2014-02-26 55 views
4

基本問題:檢查2維列表中的每個元素

我試圖檢查每一個元素在此列表2D

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

如果至少一個元素== ' '

那麼我想有我的函數返回true,否則 如果他們都沒有' '然後返回False。

這是我有這麼遠,但它停靠在循環思維字符串中的第一個元素的第一次迭代是那麼B就沒有感到到第一列表的第4單元返回False。

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

     else: 
      return False 
+0

你不應該使用我在你的兩個循環 – jcfollower

+0

同樣的指數,除非你的縮進是不同的,你返回真或假的第一要素檢查並停止迭代 – jcfollower

回答

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-loop相比非常快。

0

要解決你的代碼嘗試...

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