我有一个这样的数组:
array1=[[a,b,c,d],
[e,f,g,h],
[k,l,m,d],
[x,y,j,d],
[p,r,s,z]]
我想要一个这样的数组:
array2=[[a,b,c,d],
[e,f,g,h],
[p,r,s,z]]
例如,array1[0][3]=d 现在是 uniq。
你能帮忙吗,我如何用 Python 编写程序?
答案 0 :(得分:0)
您可以跟踪到目前为止在 set
中看到的内容并循环遍历数组。如果集合中没有来自子列表的项(交集为空集),则将其附加到结果并将其元素添加到集合中。
seen = set()
result = []
for sub in array1:
if not seen.intersection(sub):
result.append(sub)
for l in sub:
seen.add(l)
结果:
[['a', 'b', 'c', 'd'],
['e', 'f', 'g', 'h'],
['p', 'r', 's', 'z']]
答案 1 :(得分:0)
另一种解决方案(不使用集合)是将 array1 复制到 array2,遍历 array1 的行和项,并从 array2 中删除之前已经看到其项的任何行:
array2 = list(array1)
seen = []
for row in array1:
for item in row:
if item in seen:
array2.remove(row)
break
seen.append(item)
print(array2)
#[['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['p', 'r', 's', 'z']]