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 两个不等长列表交叉合并的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中把两个列表的各项分别合并为列表

markdown 列表交叉合并类似Python中的zip功能(clojure clj ruby​​ scala map vector list)

python实战技巧之两个不等长列表让里面的数字一一对应地相加

python合并两个有序列表(list)

如何合并两个列表python

合并两个已经排好序的不等长的数组