chr*_*ina 1 python list-comprehension python-3.x
鉴于列表:
a = [
[2, 10 ],
[3, 120],
[4, 30 ]
]
b = [
[1, 10 ],
[2, 40]
]
Run Code Online (Sandbox Code Playgroud)
我怎么能使用列表理解,压缩,最小/最大,连接,枚举,izip_longest,map和/或lambda来返回左变量排序的第三个列表,左变量的重复项连接成一行,保持原始列表在中间位置和最后位置的位置.假设a将始终处于中间位置,并且b将始终位于最后位置,因为a并且b可能具有不同的长度.
c = [
[1, None, 10 ],
[2, 10 , 40 ],
[3, 120 , None ],
[4, 30 , None ]
]
Run Code Online (Sandbox Code Playgroud)
对于一行复制/粘贴
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]]
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.在一个令人垂涎的单行之后,我迷失了方向,以帮助我理解蟒蛇大师的思维方式!
使用链图+列表理解:
>>> 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]]
Run Code Online (Sandbox Code Playgroud)
它很容易推广到以这种方式使用2个以上的输入列表.