2017-04-17 37 views
1

我試圖刪除列表中的元素(此時列表的維度爲七)如果任何子元素爲空。即給定的這個簡單的例子列表:使用迭代並設置重寫列表(根據條件刪除條目)

'car','doug','' 
dede,eli,fred 
'law', '','frank' 
'','roger','w' 
alex,berk,carl 

刪除任何一行「空白」(或在某點的另一個條件)

dede,eli,fred 
alex,berk, carl 

到目前爲止,我已經做了一些這方面(這之後作品!)爲我的列表,其中有7個元素使用集合

list1=[item for item in list1 if item [0]!= ''] 
list1=[item for item in list1 if item [1]!= ''] 
list1=[item for item in list1 if item [2]!= ''] 
list1=[item for item in list1 if item [3]!= ''] 
list1=[item for item in list1 if item [4]!= ''] 
list1=[item for item in list1 if item [5]!= ''] 
list1=[item for item in list1 if item [6]!= ''] 

我試過類似下面的東西。我不知道如何在正確的名單在這個傳遞給函數的上下文,但這裏x是一個列表

def empty(x): 
    x=list(x) 
    # the range should be updated to the column length here 
    # i've left it at 7 for illustration 
    for i in range(7): 
     x=x[for item in x if item [i]!=''] 
    return x 
+1

嘗試'[item1 item1 list1]' –

+0

謝謝,我會試試吧! – user7351362

回答

3

如何使用一些Python內建allfilter

x = [ 
    ['car','doug',''], 
    ['dede', 'eli', 'fred'], 
    ['law', '','frank'], 
    ['','roger','w'], 
    ['alex', 'berk' , 'carl'] 
] 

# python 2.7 
print filter(all, x) 

# python 3.5 
print(list(filter(all, x))) 

- [['dede', 'eli', 'fred'], ['alex', 'berk', 'carl']] 

篩選器計算一個preedicate且僅當它是真的


所有返回true返回它如果一個迭代的所有項目是真實的

+0

我會試試!以確保我理解它雖然 - 所有函數返回一個「空」條目儘管錯誤 - 正確嗎? – user7351362

+1

是的python空字符串評估爲False:自己嘗試:'print(bool(''))' – smurfMT

+0

非常酷,謝謝! – user7351362