【发布时间】:2020-11-21 09:47:36
【问题描述】:
我有以下列表作为示例:
ls=[
[1, 2, 3, 3, 4, 5, 5, 5, 6],
['a', 'a', 'b', 'b', 'c', 'd', 'e', 'f', 'g'],
['r', 's' ,'t', 'u', 'v', 'w', 'x', 'y', 'z']
]
我想删除重复的元素,一旦检测到重复,它的索引必须用于删除其他行中具有此索引的所有元素。示例的结果必须是:
[
[1, 3, 4, 5, 6],
['a', 'b', 'c', 'd', 'g'],
['r', 't', 'v', 'w', 'z']
]
我写了以下代码:
#Helping function to delete the elements of col_index from all rows
def delete_col(l, col_index):
for sl in l:
del sl[col_index]
#To delete the duplicates.
def list_without_columns_duplicates(l):
i=0
j=1
while i<len(l):
while j<len(l[0]):
if l[i][j]==l[i][j-1]:
delete_col(l, j)
j+=1
i+=1
但是,当我运行此代码时,我发现了两个问题:(1) 它只考虑第一行的重复项,以及 (2) 它只删除第一个重复项,并且需要多次运行才能删除所有其他重复项。任何帮助将不胜感激。
【问题讨论】:
-
您的输入列表长度不同。如果其他列表中缺少索引怎么办?
-
@jizhihaoSAMA,感谢您的回答。但是,使用
set(i)将每一行与其他行分开考虑,因此它不会给出我想要的适当结果 -
@schwobaseggl,我编辑了列表,现在它们的长度相同