Skip to main content
 首页 » 编程设计

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

2025年05月04日10飞鱼

给定列表:

a = [ 
 [2, 10  ], 
 [3, 120], 
 [4, 30 ] 
] 
 
b = [ 
 [1, 10 ], 
 [2, 40] 
] 

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

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 个以上的输入列表。