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