Python 合并固定长度的多个列表

Python 合并固定长度的多个列表,python,Python,如何将固定长度的多个列表合并在一起,以获得在特定位置具有最新值的单个列表。在下面的示例中,结果将是[1,3322233311111] l1 = [1, "", 111, "", 11111] l2 = ["", 22, 222, 2222, ""] l3 = ["", 33, "", 3333, ""] l4 = .... l5 = ... .... 是否有任何内置函数来执行此操作。我可以使用两个循环来实现,但必须有其他智能方法来实现同样的功能您可以使用zip

如何将固定长度的多个列表合并在一起,以获得在特定位置具有最新值的单个列表。在下面的示例中,结果将是
[1,3322233311111]

l1 = [1,    "", 111,    "", 11111]
l2 = ["",   22, 222,    2222,   ""]
l3 = ["",   33, "", 3333,   ""]
l4 = ....
l5 = ...
....
是否有任何内置函数来执行此操作。我可以使用两个循环来实现,但必须有其他智能方法来实现同样的功能

您可以使用
zip(l1、l2、l3)
,然后使用元组上的
运算符:

[tup[2] or tup[1] or tup[0] for tup in zip(l1, l2, l3)]
运算符返回第一个真值。由于需要最后一个真值,因此需要对元组元素反向应用
运算符

或者您可以
zip
反向排列列表,并按顺序使用
运算符:

[tup[0] or tup[1] or tup[2] for tup in zip(l3, l2, l1)]

更新:

我建议您使用
列表
,而不是可变数量的列表。在这种情况下,您可以得到如下结果:

li = [[1,    "", 111,    "", 11111], 
      ["",   22, 222,    2222,   ""], 
      ["",   33, "", 3333,   ""], ..... so on
     ]

print [reduce(lambda a, b: a or b, tup) for tup in zip(*li[::-1])]
您可以在元组上使用
zip(l1、l2、l3)
,然后使用
运算符:

[tup[2] or tup[1] or tup[0] for tup in zip(l1, l2, l3)]
运算符返回第一个真值。由于需要最后一个真值,因此需要对元组元素反向应用
运算符

或者您可以
zip
反向排列列表,并按顺序使用
运算符:

[tup[0] or tup[1] or tup[2] for tup in zip(l3, l2, l1)]

更新:

我建议您使用
列表
,而不是可变数量的列表。在这种情况下,您可以得到如下结果:

li = [[1,    "", 111,    "", 11111], 
      ["",   22, 222,    2222,   ""], 
      ["",   33, "", 3333,   ""], ..... so on
     ]

print [reduce(lambda a, b: a or b, tup) for tup in zip(*li[::-1])]

另一种方法是使用
map
和函数获取一系列参数中的第一个非空项:

def first_nonblank(*args):
    for item in args:
        if item is not '':
            return item

print map(first_nonblank, l3, l2, l1)


如果
li
是一个列表列表,如@Rohit Jain的回答所示。

另一种方法是使用
map
和函数获取一系列参数中的第一个非空白项:

def first_nonblank(*args):
    for item in args:
        if item is not '':
            return item

print map(first_nonblank, l3, l2, l1)


如果
li
是@Rohit Jain的答案中的列表。

谢谢,但我忘记提及的列表数量不一谢谢,但我忘记提及的列表数量不一