将python中的多个列表组合到单个列表中

时间:2017-06-16 23:16:04

标签: python list

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

上述功能将2个列表合并为一个列表。例如。 lt1可能与['a', 'b']

类似

最简单的方法是将它从2个输入参数扩展到任意数量的列表作为输入。输出仍应是列表列表

- 编辑

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

4 个答案:

答案 0 :(得分:6)

如果我理解你的问题,你想要这样的事情:

class Post(models.Model):
       uploaded_by = models.ForeignKey('auth.User',default=1,related_name='uploads')
       ...

因此,我们正在使用>>> def combine(*args): ... return list(args) ... >>> print combine([1,2,3], ['a','b','c'], [True, False]) [[1, 2, 3], ['a', 'b', 'c'], [True, False]] 中的positional arguments(存储在args中)并将其转换为列表。它适用于任何数量的参数,并且它会愉快地将任何内容(不仅仅是列表)组合到一个列表中。

答案 1 :(得分:3)

您可以在此处使用列表推导,并使用*args让它适用于任意个参数:

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

代码的工作原理如下,通过使用list comprehesion,我们将迭代args,这是一个未命名参数的元组,其中combine_lists被调用。对于每个列表lt,我们会检查if lt[0]是否属于这种情况,然后我们会将lt添加到列表中,否则我们会添加None

请注意,此程序可以引发错误:如果其中一个lt 无法编入索引,或没有元素index 0 。所以这是非常不安全的。

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

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

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

答案 2 :(得分:1)

您可以将map()与多个参数*args一起使用,并返回map object,如下例所示:

def combine_list(*args):
    return map(list, args)


final = list(combine(['a','b'], ['c', 'd'], ['e', 'f']))
print(final)

输出:

[['a', 'b'], ['c', 'd'], ['e', 'f']]

答案 3 :(得分:1)

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

你可以这样做。它将为您提供您拥有的两个列表的列表。

相关问题