使用迭代和设置重写列表(根据条件删除条目)

时间:2017-04-17 21:43:52

标签: python list python-3.x iteration

如果任何子元素为空,我试图删除列表中的元素(目前列表的维度为7)。即给出这个更简单的示例列表:

'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 个答案:

答案 0 :(得分:3)

如何使用一些python builtins 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']]

过滤器评估预设,只有在真实时才返回

如果迭代器中的所有项都为真,则全部返回true