python - 从两个不同长度的列表( [2 * n] 和 [2 * m] )到 [ 3 * len(unique(n[0],m[0])) ] 的单个列表的列表理解

标签 python python-3.x list-comprehension

给定列表:

a = [
 [2, 10  ],
 [3, 120],
 [4, 30 ]
]

b = [
 [1, 10 ],
 [2, 40]
]

我如何使用列表推导、压缩、最小/最大、连接、枚举、izip_longest、map 和/或 lambda 来返回按左变量排序的第三个列表,并将左变量的副本连接到一个单行,保持原始列表在中间和最后位置的位置。假设 a 永远在中间位置,b 永远在最后一个位置,如 ab 可能有不同的长度。

c = [
 [1, None, 10   ],
 [2, 10  , 40   ],
 [3, 120 , None ],
 [4, 30  , None ]
]

对于一行复制/粘贴

a = [[2, 0],[3, 120],[4, 30]]
b = [[1, 0],[2, 40]]
c = [[1, None, 0],[2, 0, 40],[3, 120 , None],[4, 30, None]]

感谢您的帮助。我迷路了,试图用令人垂涎的单行代码来帮助我理解 Python 大师的思维方式!

最佳答案

使用链图+列表理解:

>>> from collections import ChainMap
>>> c = ChainMap(dict(a), dict(b))
>>> [[k] + [d.get(k) for d in c.maps] for k in c]
[[1, None, 0], [2, 0, 40], [3, 120, None], [4, 30, None]]

这样可以很容易地推广到使用 2 个以上的输入列表。

关于python - 从两个不同长度的列表( [2 * n] 和 [2 * m] )到 [ 3 * len(unique(n[0],m[0])) ] 的单个列表的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54542620/

相关文章:

python - 查找列表中高于特定频率的第一个元素

python - 如何在调试日志中查看 Python 请求使用哪个 IP 地址进行连接?

Python优化形状重叠检测

带有 unicode 文件名的 python-requests post

python - Postgresql 表更新

python - 使用索引的 Numpy 数组索引

python - 更新列表中的 Python for 循环是如何工作的?

Python - 在条件下调用函数

python - Django - 以geoJSON格式获取多边形的质心

python - 如何从列表理解中返回字符串