python - 如何从 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"]]
解决方案
您可以始终使用列表理解。将所有要删除的单词放在一个单独的列表中,然后试试这个:
>>> 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']]
推荐阅读
- java - Android软输入模式,在导航栏上停用
- python - 更新 UI 的 PyQt5 线程
- kubernetes - 使用地图对象时输出到序列添加换行符
- azure-synapse - Azure Synapse 映射数据流 - 派生列中列名的动态映射
- ubuntu - Cockroach DB 无法创建客户端证书
- r - 如何在闪亮的应用程序中使用带有 echarts4r 的回调
- python - 如何将位代码解码为表情符号 python pandas
- python - HTTP 服务器无法提供名称中带有 % 字符的文件
- scala - maven repo1 中缺少 Typesafe Play sbt-plugin 版本 2.8.7
- python - Python 输出给出对象地址而不是值