python交叉合并两个列表

想合并两个列表,交叉合并,同等长度的比较好处理,列表长度不一样长就麻烦点,网上找到一个方法:

1、python交叉合并两个长度不一样长的列表:

a = [1, 3, 5]
b = [2, 4, 6, 8, 22, 656]
c = []

for i in range(max(len(a), len(b))):
    if a:
        c.append(a.pop())
    if b:
        c.append(b.pop())
print(c)

输出:[5, 656, 3, 22, 1, 8, 6, 4, 2]

还可以用列表表达式,目前还耐不活,我自己老老实实for循环了:

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 ) )]

1、python交叉合并长度一样长的列表:

1.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加

2.extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加

3.+ 直接用+号看上去与用extend()一样的效果,但是实际上是生成了一个新的列表存这两个列表的和,只能用在两个列表相加上

4.+= 效果与extend()一样,向原列表追加一个新元素,在原有列表上增加

list1 = [1,2,3]

list2 = [4,5,6]

list_new = []

for item in list1:

  list_new.append(item)

for item in list2:

  list_new.append(item)

print list_new

zip方法:

a = [1,2,3]

b = [4,5,6]

c = zip(a,b) //c = [(1,4),(2,5),(3,6)]

list_new = [row[i] for i in range(len(0)) for row in c]