【问题标题】:List comprehensions with nested lists in pythonpython中带有嵌套列表的列表推导
【发布时间】:2017-11-01 13:16:11
【问题描述】:

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

[['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 打印为列表。我需要他们像其他名字一样打印出来。我如何在这里应用列表理解?请帮忙。

【问题讨论】:

  • 不,我正在寻找列表理解是否可能,我可以轻松地写出这样的循环,但它不是我想要的
  • @Avij 你怎么能打印第一个巢?有2个巢吧..?
  • [myname_list 中名称的名称]

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


【解决方案1】:

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

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"];

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

【讨论】:

    【解决方案2】:

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

    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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2012-08-09
      • 2016-03-26
      • 2023-03-06
      • 2021-07-28
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多