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的答案中的列表。谢谢,但我忘记提及的列表数量不一谢谢,但我忘记提及的列表数量不一