我有三个包含不同元素的列表,但是其中一些是相同的元素。那些相同的元素应该是相同的顺序。这是我的代码:
import itertools a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] b = [0, 2, 4, 6, 8, 10, 12, 14] c = [0, 4, 8, 12, 16] for x, y, z in itertools.zip_longest(a, b, c): print(x, y, z)
当我运行它时,打印出来如下:
0 0 0 1 2 4 2 4 8 3 6 12 4 8 16 5 10 None 6 12 None 7 14 None 8 None None 9 None None
但我更喜欢他们变成这样:
0 0 0 4 4 4 8 8 8 None 12 12 2 2 None 6 6 None 1 10 16 3 14 None 5 None None 7 None None 9 None None
编辑:那些相同的元素应该在顶部,其中3个在一起。如果3个中有2个相同的元素,我希望它们像:
None 12 12
正如我在上面的例子中指出的那样。如果某些特定线上的元素不同,则无关紧要,请保持原样(参见示例:1 10 16)。 总结一下;我首先需要在特定的行上使用相同的3个元素。另一个很小的理想例子:
a = [2, 1, 3, 5] b = [1, 2] c = [2, 3, 4]
我们的小例子应该成为这个:
2 2 2 3 None 3 1 1 None 5 None 4
答案 0 :(得分:0)
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [0, 2, 4, 6, 8, 10, 12, 14]
c = [0, 4, 8, 12, 16]
max_len = max(len(a),len(b),len(c))
print max_len
while not len(a)==int(max_len):
a.append(0)
while not len(b)==int(max_len):
b.append(0)
while not len(c)==int(max_len):
c.append(0)
print a
print b
print c
d = [max(item) for item in zip(a,b,c)]
m = []
for item in d:
if item in a:
val1 = item
a.remove(item)
else:
val1 = None
if item in b:
val2 = item
b.remove(item)
else:
val2 = None
if item in c:
val3 = item
c.remove(item)
else:
val3 = None
m.append((val1,val2,val3))
print m
<强>输出:强>
10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 10, 12, 14, 0, 0]
[0, 4, 8, 12, 16, 0, 0, 0, 0, 0]
[(0, 0, 0), (4, 4, 4), (8, 8, 8), (None, 12, 12), (None, None, 16), (None, 10, None), (None, None, None), (None, 14, None), (None, None, None), (9, None, None)]