0

リストの2つのリストをループして、各リストの位置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 に答える