如何删除包含重复第一个元素的二维列表中的那些一维列表?
How to delete those 1D lists within a 2D list which contains with duplicate 1st element?
假设我有一个二维列表(仅包含浮点数)-
a=[[1,2],[1,3],[2,5],[4,3],[3,4],[4,9]]
我想删除那些具有公共第一个元素并稍后出现的一维列表。例如-第一个列表 [1,2] 包含 1 作为第一个元素,因此删除第一个元素为 1 的下一个列表,在本例中是第二个列表 [1,3],然后我们取 [2,5] ,[4,3],[3,4] 和往常一样,但是因为我们已经采用了 [4,3],所以我们不会采用具有公共第一个元素 4.
的 [4,9]
所以最终输出应该是-
[[1,2],[2,5],[4,3],[3,4]]
如何在 Python 中完成此操作?我可以想到一些嵌套的 for 循环和一堆显然效率低下的 if else 语句,我希望 set/map/zip 函数有一个技巧,它更 Pythonic.
使用set()
过滤掉重复项:
a = [[1, 2], [1, 3], [2, 5], [4, 3], [3, 4], [4, 9]]
out, seen = [], set()
for item in a:
if not item[0] in seen:
seen.add(item[0])
out.append(item)
print(out)
打印:
[[1, 2], [2, 5], [4, 3], [3, 4]]
a=[[1,2],[1,3],[2,5],[4,3],[3,4],[4,9]]
k=[]
[a.remove(i) if i[0] in k else k.append(i[0]) for i in a]
print(a)
假设我有一个二维列表(仅包含浮点数)-
a=[[1,2],[1,3],[2,5],[4,3],[3,4],[4,9]]
我想删除那些具有公共第一个元素并稍后出现的一维列表。例如-第一个列表 [1,2] 包含 1 作为第一个元素,因此删除第一个元素为 1 的下一个列表,在本例中是第二个列表 [1,3],然后我们取 [2,5] ,[4,3],[3,4] 和往常一样,但是因为我们已经采用了 [4,3],所以我们不会采用具有公共第一个元素 4.
所以最终输出应该是-
[[1,2],[2,5],[4,3],[3,4]]
如何在 Python 中完成此操作?我可以想到一些嵌套的 for 循环和一堆显然效率低下的 if else 语句,我希望 set/map/zip 函数有一个技巧,它更 Pythonic.
使用set()
过滤掉重复项:
a = [[1, 2], [1, 3], [2, 5], [4, 3], [3, 4], [4, 9]]
out, seen = [], set()
for item in a:
if not item[0] in seen:
seen.add(item[0])
out.append(item)
print(out)
打印:
[[1, 2], [2, 5], [4, 3], [3, 4]]
a=[[1,2],[1,3],[2,5],[4,3],[3,4],[4,9]]
k=[]
[a.remove(i) if i[0] in k else k.append(i[0]) for i in a]
print(a)