python - 如何比较两个不同长度的列表并删除一些元素?
问题描述
我有两个列表,第一个包含一些在第二个列表中不存在的元素,其中包含更多元素。我需要删除第二个列表中不存在的元素。
在下面的示例中,我只需要从第一个列表中删除“0”。所以:
Input:
list1 = [0,1,2,3]
list2 = [1,2,3,4,5,6,7]
Output:
list1 = [1,2,3]
list2 = [1,2,3,4,5,6,7]
我尝试了这个简单的代码,但它返回一个空列表
list1=[0,1,2,3]
list2=[1,2,3,4,5,6,7]
for element in list1:
for element1 in list2:
if element != element1:
for element in list1:
list1.remove(element)
print(list1)
请问有什么帮助吗?
解决方案
你可以使用集合来做到这一点!
set(list1).intersection(list2) # [1,2,3]
您也可以使用列表推导,但理论上速度较慢。
list1 = [0,1,2,3]
list2 = [1,2,3,4,5,6,7]
list1 = [x for x in list1 if x in list2] # [1,2,3]
推荐阅读
- github-actions - 在 Vercel 构建步骤中设置多个环境变量
- algorithm - 递归树法与主定理的分歧
- azure-devops - Dotnet 命令在单元测试套件上因非零退出代码而失败,没有明显的错误详细信息
- lua - Lua 如何在函数内部创建表?
- jenkins - 解析并返回 Jenkins 控制台输出
- ffmpeg - FFMPEG 将视频分割成带音频的片段
- java - 运行带有来自 java 的用户交互的 shell 脚本
- xpath - 如何识别出现在 XML 文档中不同级别的元素的不同 xpath?
- botframework - 如何在 Bot Composer 的正则表达式中使用捕获组
- sql - SQL如何计算不基于行的中位数