如何在不使用列表理解的情况下从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"]]
答案 0 :(得分:2)
您可以始终使用列表理解。在单独的列表中获取所有要删除的单词,然后尝试以下方法:
>>> 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']]
答案 1 :(得分:0)
您可以简单地使用地图和过滤器
split_list = [["a", "b", "c"], ["SUB", "d", "e", ], ["f", "Billing"]]
remove_list = ["SUB", "Billing", "INDEPENDENT", "DR"]
split_list = list(map(lambda x: list(filter(lambda i: i not in remove_list, x)), split_list))
print(split_list)
答案 2 :(得分:0)
[[[x代表z中的x,如果x!='SUB']代表split_list中的z]
请记住,这是一个嵌套列表。将x作为子元素,将z作为元素。另外请记住,上面的代码将删除所有的“ SUB”。仅用于删除第一个实例,请使用remove。