python - 如何使列表唯一并保持已消除项目的索引?
问题描述
我有两个清单。它们具有相同的大小和种类,彼此相关。我想让其中一个独一无二,并消除另一个列表中的相应元素。(所以我需要消除项目的索引)。假设我们总是保留第一个并消除其他相同的项目。
例子:
my_list=[['A','B','C'],['D','Q'],['O','W','S'],['D','Q'],['D','Q']]
sec_list=[[1,2,5],[3,4],[5,6,4],[7,8],[2,5]]
结果:
my_list=[['A','B','C'],['D','Q'],['O','W','S]]
sec_list=[[1,2,5],[3,4],[5,6,4]]
我做了什么:
我知道如何通过以下代码使列表元素唯一:
Uni=[]
[Uni.append(i) for i in my_list if i not in Uni]
但它没有给我删除第二个列表中相应项目的索引。我试过for循环:
index_remove=[]
for s,i in enumerate(my_list):
for r,j in enumerate(my_list):
if s!=r:
if i==j:
if s not in index_remove:
index_remove.append(s)
但它给了我所有类似项目的索引。不是应该删除的那个。
解决方案
用于zip()
一起迭代两个列表。将元素附加到第一个结果时,也将相应的元素附加到第二个结果。
result1 = []
result2 = []
for my, sec in zip(my_list, sec_list):
if my not in result1:
result1.append(my)
result2.append(sec)
推荐阅读
- node.js - PostgreSQL 和 Swagger 数据类型不兼容
- json - 我可以在 Flutter 中使用 DataTable 以表格格式显示我的 JSON 数据吗?
- android - 如何在 Flutter 中删除动画?
- excel - VBA中的查找函数返回Nothing
- python - 避免在 for 循环中调用 db 的最佳方法
- pandas - 通过条件替换多列的优雅方法
- bash - bash 脚本(基本)设置 openvpn
- swift - 观察 Swift 结构体的变化
- javascript - 如何使 companyWebsite fetch 在我的浏览器上显示为可点击的链接
- powerbi - PowerBI - 最近日期的每个状态的行数(不同的)。插入的示例表