将python中的多个列表合并为单个lis

2024-09-30 14:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

def combine_lists(lt1, lt2):
    if lt1[0] and lt2[0]:
        lt = [lt1, lt2]
    elif lt1[0] and not lt2[0]:
        lt = [lt1]
    elif not lt1[0] and lt2[0]:
        lt = [lt2]
    elif not lt1[0] and not lt2[0]:
        lt = [None, None]

    return lt

上面的函数将两个列表合并为一个列表。E、 g.lt1可能是类似['a', 'b']

把它从2个输入参数扩展到任意数量的列表作为输入,最具python风格的方法是什么。输出仍然应该是一个列表列表

--编辑

lt1=[1,2,3],lt2=[4,5,6]的预期答案应该是[[1,2,3],[4,5,6]]


Tags: and函数ltnone列表参数returnif
3条回答

如果我理解你的问题,你想要这样的东西:

>>> def combine(*args):
...     return list(args)
... 
>>> print combine([1,2,3], ['a','b','c'], [True, False])
[[1, 2, 3], ['a', 'b', 'c'], [True, False]]

所以,我们使用args(存储在tuple)中的positional arguments,并将它们转换为一个列表。它适用于任意数量的参数,并且可以很高兴地将任何东西(不仅仅是列表)组合成一个列表。在

    def combine_lists(lt1, lt2):
       lt = []
       lt.append(lt1)
       lt.append(lt2)
       return lt

你可以简单地做这个。它会给你两个清单的清单。在

您可以在这里简单地使用列表理解,并使用*args对任意数量的参数有效:

def combine_lists(*args):
    return [lt if lt[0] else None for lt in args]

代码如下所示,通过使用list comprehesis,我们将迭代args,这是一个未命名参数的元组,调用{}。对于每个列表lt,我们检查if lt[0]如果是这样的话,那么我们将lt添加到列表中,否则我们添加None。在

注意,这个程序可以引发一个错误:如果lts中的一个不能被索引,或者在索引0处没有元素。所以很不安全。在

您可以通过稍微改变语义来防止这种情况发生:如果我们处理的是一个空列表,那么我们在下面的示例中添加该列表:

^{pr2}$

如果所有的对象都是列表、元组等,这将起作用

相关问题 更多 >