以奇怪的方式组合2个列表

时间:2015-07-29 20:03:35

标签: python python-2.7 loops nested-lists

说我有这两个列表列表。

[[1.0, 100.0], [2.0, 100.0], [3.0, 100.0], [4.0, 100.0], [5.0, 100.0]]
[[1.0, 20.0], [2.0, 20.0], [3.0, 0.0]]

请注意不同的尺寸,我想将它们组合起来创建下面的列表

[[1.0, 100.0, 20.0], [2.0, 100.0, 20.0], [3.0, 100.0, 0.0], [4.0, 100.0], [5.0, 100.0]]

它们可以是任意数量的列表,它们可以是任意长度。

1 个答案:

答案 0 :(得分:0)

如果您想要唯一值并组合任何长度列表:

from itertools import chain, izip_longest,ifilter
obj = object()
from collections import OrderedDict

print([list(ifilter(lambda x: x is not obj, OrderedDict.fromkeys(chain.from_iterable(tup))))
       for tup in (tup for tup in izip_longest(l1,l2,fillvalue=[obj]))])

输出:

[[1.0, 100.0, 20.0], [2.0, 100.0, 20.0], [3.0, 100.0, 0.0], [4.0, 100.0], [5.0, 100.0]]

如果订单无关紧要,您可以在tup上调用set而不是OrderedDict。