python - 如何在 Python 中组合两个列表的每个元素?

标签 python list dictionary

我想合并列表中的大量列表:它看起来有点像这样:

[[1,2,3,4,5], [6,7,8,9,0], [2,5,7,9,4], [4,7,8,43,6]...]

一个列表中最多约有 20 个这样的列表。我现在想将第一个列表和第二个列表组合成如下所示:

[[1,6], [2,7], [3,8], [4,9], [5,0]]

然后我想用第一个和第三个再做一次,一直到最后。然后再从第二个列表开始到第 3、4...最后一行(但不是第一个,因为已经用第 1 到第 2 个列表完成了)。我如何编写代码来执行此操作?

这是我目前所拥有的:

xcols = 包含我上面显示的所有列表的列

def MakeLists(xcols):
    multilist = []
    for i in xcols:
        for j in xcols[index(i):]:
            currentlist = map(list.__add__, i, j)
            multilist.append(currentlist)

虽然我运行它时给我一个错误,可能是在映射部分,因为我不知道如何首先将每个元素转换为列表然后映射它们。任何帮助都会很棒。谢谢!

最佳答案

这样的事情怎么样:

>>> 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)]

编辑: 如果您只想压缩一个列表及其后面的列表,正如评论中的人所解释的那样:

>>> 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)]

关于python - 如何在 Python 中组合两个列表的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372268/

相关文章:

python - 按间隔中的位置对组进行计数

python - ES索引与python-结合常规映射设置(含)。 index.mapping.ignore_malformed

python - 即使用户关闭了 Web 浏览器/选项卡,如何运行 Python 3 函数?

c# - DataGridView 不显示我的列表

c# - 在 C# 中,将值感染\传输到列表的相邻项

c++ - 为什么我不能 move map 的元素?

c# - 根据值删除字典中的项目

python - 使用 BeautifulSoup 抓取两个标签之间的所有 HTML

python - 加速列表和 for 循环 python

python - Python 字典 ".values()"是否按特定顺序返回列表? [Python 2]