删除嵌套列表python上的重复值



我在这里有一个问题,当我想删除重复的列表,有一个嵌套的列表,我怎么能从列表中删除重复的值?我从脚本中得到的是,它可以删除重复的列表,但是嵌套列表的结果与我期望的不同。

这是我的脚本:

# initializing list 
result = []
hasil = []
sam_list = [[11, 17, 11, 13, 13, 15, 16, 11], [4, 7, 11, 34, 4, 7, 11, 6], [1, 6, 11, 13, 13, 4, 1, 6]]
for item in sam_list:
print("START")
for x in item:
print(x, result)
if x not in result:
print("NOT IN")
result.append(x)
hasil.append(result)

结果:

[[11, 17, 13, 15, 16, 4, 7, 34, 6, 1], [11, 17, 13, 15, 16, 4, 7, 34, 6, 1], [11, 17, 13, 15, 16, 4, 7, 34, 6, 1]]

预期结果:

[[11, 17, 13, 15, 16], [4, 7, 11, 34, 6], [1, 6, 11, 13, 4]]

差不多了,你只需要在每一步重置结果列表

for item in sam_list:
print("START")
for x in item:
print(x, result)
if x not in result:
print("NOT IN")
result.append(x)
hasil.append(result)
result = []

需要在循环内初始化result = []:

sam_list = [[11, 17, 11, 13, 13, 15, 16, 11], [4, 7, 11, 34, 4, 7, 11, 6], [1, 6, 11, 13, 13, 4, 1, 6]]
hasil = []
for item in sam_list:
result = []
print("START")
for x in item:
print(x, result)
if x not in result:
print("NOT IN")
result.append(x)
hasil.append(result)

如果你不介意顺序:

original = [[11, 17, 11, 13, 13, 15, 16, 11], [4, 7, 11, 34, 4, 7, 11, 6], [1, 6, 11, 13, 13, 4, 1, 6]]
[list(set(each)) for each in original]

可以使用set。它会自动删除任何副本,然后再把它转换成一个列表,如果你想要的。

sam_list = [[11, 17, 11, 13, 13, 15, 16, 11], [4, 7, 11, 34, 4, 7, 11, 6], [1, 6, 11, 13, 13, 4, 1, 6]]
set1=set(sam_list[0])
set2=set(sam_list[1])
set3=set(sam_list[2])
result = [list(set1),list(set2),list(set3)]
print(result)

输出为:[[11、13、15、16、17],[34岁,4、6、7、11],[1、4、6、11、13]]