在python中列出具有嵌套列表的理解

时间:2017-11-01 13:16:12

标签: python-2.7 python-3.x list

我正在开发一个项目,我希望使用列表推导来打印出如下所示的嵌套列表

[['Jonathan', 'Adele', 'David', 'Fletcher', 'Steven',["A","B","C"]],['Nathan', 'Tom', 'Tim', 'Robin', 'Lindsey']]

这需要将每个名称打印为字符串。我可以像下面那样打印

['Jonathan',
 'Adele',
 'David',
 'Fletcher',
 'Steven',
 ['A', 'B', 'C'],
 'Nathan',
 'Tom',
 'Tim',
 'Robin',
 'Lindsey']

但是,我不希望A,B,C作为列表打印。我需要印刷品像其他名字一样。我如何在这里应用列表理解?请帮忙。

2 个答案:

答案 0 :(得分:0)

我可能会提供不同的列表。这些过程

A=[['aaa', 'bbb', 'ccc',["A","B","C"]],['ddd', 'eee', 'fff']];

B=A[0];

B.extend(A[1]);

将导致B

['aaa', 'bbb', 'ccc',["A","B","C"],'ddd', 'eee', 'fff'];

在此之后您可以执行类似的步骤:

C = B.pop(3);

B.extend(C);

现在列表B已成为:

['aaa', 'bbb', 'ccc','ddd', 'eee', 'fff', "A", "B", "C"];

这可能与您要查找的内容完全不同。希望这会有所帮助。

答案 1 :(得分:0)

你可能最好使用递归函数而不是列表推导,因为这适用于具有更多嵌套的一般情况。

my_list = [["Jonathan", "Adele", "David", "Fletcher", "Steven", ["A", "B", "C"]], ["Nathan", "Tom", "Tim", "Robin", "Lindsey"]]

def flatten(list_):

    result = []

    for element in list_:

        if type(element) == list:

            result += flatten(element)

        else:

            result.append(element)

    return result

print("Before:\t{}".format(my_list))

my_list = flatten(my_list)

print("After:\t{}".format(my_list))

输出:

Before: [['Jonathan', 'Adele', 'David', 'Fletcher', 'Steven', ['A', 'B', 'C']], ['Nathan', 'Tom', 'Tim', 'Robin', 'Lindsey']]
After:  ['Jonathan', 'Adele', 'David', 'Fletcher', 'Steven', 'A', 'B', 'C', 'Nathan', 'Tom', 'Tim', 'Robin', 'Lindsey']