如何遍历两个列表列表并避免特定位置值的重复组合?

时间:2012-09-25 01:28:51

标签: python list loops duplicates combinations

我想循环浏览两个列表列表,避免每个列表的第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]将基于组合与[0]重复。如何避免使用这种基于组合的副本?

谢谢。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

sorted_a = [sorted(x) for x in a]
filtered_b = filter(lambda x: sorted(x) not in sorted_a, b)