Python list 两个不等长列表交叉合并
Posted changanxuege
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python list 两个不等长列表交叉合并相关的知识,希望对你有一定的参考价值。
遇到一个需求,需要对两个长度不一定相等的列表进行交叉合并。像拉拉链一样(两边的拉链不一定相等)。
如:
a = [1, 3, 5]
b = [2, 4, 6, 8]
需将a, b 合并为 c
c = [1, 2, 3, 4, 6, 8]
网上又看到定义函数,或者使用 zip,自己觉得不太理想,就想倒腾下,当然有可能下述方法已经有人想到了。
方法一: 写 for 循环
a = [1, 3, 5]
b = [2, 4, 6, 8]
c = [ ]
for i in range( max ( len( a ), len( b ) ) ):
if a:
c.append( a.pop() )
if b:
c.append( b.pop() )
方法二: 列表表达式(超级长,试了很久才搞出来)
a = [1, 3, 5]
b = [2, 4, 6, 8]
a.reverse()
b.reverse()
c = [ ( lambda i: a.pop() if ( a! = [ ] and ( i % 2 ==0 or b==[ ] )) else b.pop() )( i ) for i in range( len( a ) + len( b ) )]
-- by Clay
以上是关于Python list 两个不等长列表交叉合并的主要内容,如果未能解决你的问题,请参考以下文章
markdown 列表交叉合并类似Python中的zip功能(clojure clj ruby scala map vector list)