在Python中合并两个或多个列表并保留顺序的最佳方法

-1 python merge python-3.x

有没有更Pythonic的方法来做到这一点?

输入:

list1 =  [['a',1],['b',2],['c',3],['d',4]]
list2 =  [['e',5],['f',6],['g',7],['h',8]]
Run Code Online (Sandbox Code Playgroud)

期望的输出:

out = [['a',1],['e',5],['b',2],['f',6],['c',3],['g',7],['d',4] ,['h',8]]
Run Code Online (Sandbox Code Playgroud)

我已经做好了:

def mergePreserveOrder(*argv):      
    for arg in argv:  
        for arg2 in argv: 
            if(len(arg) != len(arg2)) :
                print("arrays size do not match" + str(arg) +  str(arg2))                
                return 
    output = []    
    for index in range (len(argv[0])):    
        for arg in argv:
            output.append(arg[index])    
    return  output

mergePreserveOrder (list1 ,list2  )
Run Code Online (Sandbox Code Playgroud)

Aus*_*tin 5

您可以zip与以下一起使用chain.from_iterable

list(chain.from_iterable(zip(list1, list2)))
Run Code Online (Sandbox Code Playgroud)

例子

from itertools import chain

list1 = [['a',1],['b',2],['c',3],['d',4]]
list2 = [['e',5],['f',6],['g',7],['h',8]]

print(list(chain.from_iterable(zip(list1, list2))))
# [['a', 1], ['e', 5], ['b', 2], ['f', 6], ['c', 3], ['g', 7], ['d', 4], ['h', 8]]
Run Code Online (Sandbox Code Playgroud)