首页 > 解决方案 > 如何从 python 3 的嵌套列表中删除多个项目?

问题描述

如何在不使用列表理解的情况下从 python 3 的嵌套列表中删除多个项目?有时Indexerror来了如何处理?

split_list =[["a","b","c"],["SUB","d","e",],["f","Billing"]]
rem_word = ['SUB', 'Billing', 'Independent', 'DR']
for sub_list in split_list:
  for sub_itm in sub_list:
    if sub_itm not in rem_word:
        print(sub_itm)

输出是这样的:

 a
 b
 c
 d
 e
 f

预期输出:

split_list =[["a","b","c"],["d","e",],["f"]]

标签: pythonlist

解决方案


您可以始终使用列表理解。将所有要删除的单词放在一个单独的列表中,然后试试这个:

>>> split_list =[["a","b","c"],["SUB","d","e",],["f","Billing"]]
>>> rem_word = ['SUB', 'Billing', 'Independent', 'DR']
>>> output = [[sub_itm for sub_itm in sub_list if sub_itm not in rem_word] for sub_list in split_list]
[['a', 'b', 'c'], ['d', 'e'], ['f']]

如果您想在没有列表理解的情况下执行此操作,则需要声明一个空列表来附加每个新的子列表,还需要声明一个新的空子列表来附加所有新的子项目。检查这个:

output2 = []
for sub_list in split_list:
    new_sub_list = []
    for sub_itm in sub_list:
        if sub_itm not in rem_word:
            new_sub_list.append(sub_itm)
    output2.append(new_sub_list)

它输出相同:

[['a', 'b', 'c'], ['d', 'e'], ['f']]

推荐阅读