Lia*_*Fan 5 python dictionary list
我要合并的列表中有很多列表:看起来像这样:
[[1,2,3,4,5], [6,7,8,9,0], [2,5,7,9,4], [4,7,8,43,6]...]
Run Code Online (Sandbox Code Playgroud)
列表中最多约有20个这些列表。现在,我想将第一个列表和第二个列表合并,如下所示:
[[1,6], [2,7], [3,8], [4,9], [5,0]]
Run Code Online (Sandbox Code Playgroud)
然后我想从第一个和第三个开始再做一次,直到最后。然后从第二个列表到第三,第四...最后一行(但不是第一行,因为已经由第一到第二个列表完成了)重新开始。我该如何编写实现此目的的代码?
这是我到目前为止的内容:
xcols =包含我上面显示的所有列表的列
def MakeLists(xcols):
multilist = []
for i in xcols:
for j in xcols[index(i):]:
currentlist = map(list.__add__, i, j)
multilist.append(currentlist)
Run Code Online (Sandbox Code Playgroud)
但是在运行时给我一个错误,可能是在地图部分,因为我不知道如何首先将每个元素转换为列表然后进行映射。任何帮助都会很棒。谢谢!
这样的事情怎么样:
>>> import itertools
>>> foo = [[1, 2, 3], [4, 5, 6], [7, 8, 8]]
>>> for p in itertools.permutations(foo, 2):
... print zip(*p)
...
[(1, 4), (2, 5), (3, 6)]
[(1, 7), (2, 8), (3, 8)]
[(4, 1), (5, 2), (6, 3)]
[(4, 7), (5, 8), (6, 8)]
[(7, 1), (8, 2), (8, 3)]
[(7, 4), (8, 5), (8, 6)]
Run Code Online (Sandbox Code Playgroud)
编辑:如果你只想压缩一个列表,后面的列表,正如评论中的人所解释的那样:
>>> import itertools
>>> for p in itertools.combinations(foo, 2):
... print zip(*p)
...
[(1, 4), (2, 5), (3, 6)]
[(1, 7), (2, 8), (3, 8)]
[(4, 7), (5, 8), (6, 8)]
Run Code Online (Sandbox Code Playgroud)