0

我想遍历两个列表列表,并避免每个列表的位置 1 和 2 之间的重复值组合。

a = [[2007, 206, 205, 8], [2007, 206, 208, 9]]
b = [[2007, 205, 206, 8], [2007, 207, 210, 10]]

在这种情况下,对于 a[0],位置 1 和 2 将分别为 206 和 205,对于 b[0],位置 1 和 2 将分别为 205 和 206。a[0] 和 b[0] 源自相同数据集,但结构不同。但是,根据组合, b[0] 将是 a[0] 的副本。如何避免这种基于组合的重复?

谢谢你。

4

2 回答 2

1

如果您想要以下结果:

c = [[2007, 206, 205, 8], [2007, 206, 208, 9], [2007, 207, 210, 10]]

这应该很容易:

a = [[2007, 206, 205, 8], [2007, 206, 208, 9]]
b = [[2007, 205, 206, 8], [2007, 207, 210, 10]]
from itertools import chain
seen = set()
c = []
for lst in chain(a,b):
    one_two = tuple(lst[:1] + sorted(lst[1:-1]) + lst[-1:])
    if one_two not in seen:
       seen.add(one_two)
       c.append(lst)
于 2012-09-25T01:37:06.583 回答
0
sorted_a = [sorted(x) for x in a]
filtered_b = filter(lambda x: sorted(x) not in sorted_a, b)
于 2012-09-25T01:42:09.820 回答