python - 如何在python中分别删除两个列表中的匹配值?
问题描述
我的 for 循环在列表方面遇到问题。我有两个列表,如下所示。现在,如果两个列表中的名称匹配,我想删除该名称。我的代码
Input:
col = ['cat','dog','bird','fish']
col_names= [cat,bird]
r=[]
for i in col:
print(i)
if i in col_names: col_names.remove(i)
r.append(col_names)
print(r)
然后我得到这样的输出
r = [['dog','fish']] [['dog','fish']]
我想要的是:
r =['dog','bird','fish'] ['cat','dog','fish']
解决方案
实现这一点的更简单方法是使用嵌套列表理解:
>>> col = ['cat','dog','bird','fish']
>>> col_names= ['cat', 'bird']
>>> [[c for c in col if c !=cn] for cn in col_names]
[['dog', 'bird', 'fish'], ['cat', 'dog', 'fish']]
您共享的代码在逻辑上不正确。如果你想用显式for
循环来做,你可以这样写:
new_list = []
for cn in col_names:
temp_list = []
for c in col:
if c != cn:
temp_list.append(c)
new_list.append(temp_list)
print(new_list)
推荐阅读
- jmeter - 获取非 HTTP 响应消息:Taurus 容器上的连接重置消息
- android - 在 MaterialAlertDialogBuilder 中使用 Nagivation 时出现偶发性 java.lang.IllegalStateException
- javascript - 如何在不删除旧数组的情况下设置数组状态
- linux - 在 Google VM 上硬重启后,git 上的过时 NFS 文件句柄
- python - 如何在 python 循环中使用 file.seek()?
- javascript - WebView2 (WPF) - 从本地文件夹加载网站并调用 C# 函数并调用 JS 函数
- typeorm - 如何查询用户列表?
- flutter - 如何将 Future builder 与提供者一起使用?
- amazon-web-services - 使用 docker compose 将 ECS 应用程序部署到 AWS
- vue.js - 使用 Webpack 在 Vue 项目中全局加载 sass 变量