创建列表/如果lis中存在字符串,则从列表中删除行

2024-04-26 12:13:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个二维的字符串列表

data = [['DAL', "Luna's", 'Dallas', 'TX', '75235-3013', 'US', 40162.0, 'CFSAN', 'Pesticides and Chemical Contaminants'],
        ['DAL', "Luna's", 'Dallas', 'TX', '75235-3013', 'US', 41033.0, 'CFSAN', 'Foodborne Hazards']]

如果我的列表中有一行包含“Food”字符,比如本例中的foodborned Hazards,我希望将其从列表中删除。这可以通过从列表中删除该行或创建一个不包含“食物”的新列表来实现。你知道吗

我试着做下面的列表理解,但它不起作用。你知道吗

filtered_data = [[data[i,j] for j in range(len(data[0]))] for i in range(len(data)) if 'Food' in data[i,:]]

有人能把我引向正确的方向吗?你知道吗


Tags: 字符串in列表fordatalenfoodrange
3条回答
[[y for y in x if 'Food' not in str(y)] for x in data]

输入:数据 输出:

[['DAL', "Luna's", 'Dallas', 'TX', '75235-3013', 'US', 40162.0, 'CFSAN', 'Pesticides and Chemical Contaminants'], ['DAL', "Luna's", 'Dallas', 'TX', '75235-3013', 'US', 41033.0, 'CFSAN']]

如果要删除包含“食物”的列表,请尝试以下操作:

[x for x in data if 'Food' not in str(x)]

输出:

[['DAL', "Luna's", 'Dallas', 'TX', '75235-3013', 'US', 40162.0, 'CFSAN', 'Pesticides and Chemical Contaminants']]
thelist[:] = [x for x in thelist if 'Food' not in str(x)]

你可以在遍历列表的时候使用它-你永远不会摆脱索引错误

为两个嵌套列表添加信息-您的案例:

for singlelist in data:
    singlelist[:] = [x for x in singlelist if 'Food' not in str(x)]
print data

这是filter的工作。理解也可以达到同样的效果,但我发现map/filter/reduce总是让代码更容易阅读:

def my_food_filter(inner_list):
    return not any(['Food' in str(p) for p in inner_list])

foodless_list = filter(my_food_filter, data)

相关问题 更多 >