【问题标题】:Triple nested list comprahension python. Is it possible?三重嵌套列表理解python。是否可以?
【发布时间】:2018-07-22 05:38:30
【问题描述】:

我正在练习嵌套列表理解,我遇到了一些我无法解决的问题,也无法在网上找到任何解决方案:

nested_lista = [[2,1,2,3],[1,2,3,4],[4,4,[16,1,3]]]

使用循环很容易遍历这个嵌套列表的每一层

def nested_loops():
    for x in nested_lista:

        for y in x:
            print(y)

            if type(y) == list:

                for z in y:
                    print(z)

输出:

2
1
2
3
1
2
3
4
4
4
[16, 1, 3]
16
1
3

现在我尝试使用嵌套列表理解来实现类似的输出,但无论我尝试什么它都无法正常工作;/

这是我想出的:

[[[print(y) for y in z if type(z)==list]print(z) for z in x]for x in nested_lista]

或者至少我尝试遍历最后一层,但它也不起作用

[[[print(y) for y in z if type(z)==list] for z in x]for x in nested_lista]

是否有可能解决这个问题或者我应该放弃?

【问题讨论】:

  • 列表推导式不仅仅是编写for循环的好方法;它们用于构建列表。如果你想产生副作用而不是建立一个列表,那么列表推导式不是这项工作的工具。
  • @user2357112supportsMonica 这是一个合理的问题:python 缺少用于集合处理的链接 - 将它放在我最近使用的所有其他语言之后,包括 javascript、ruby、java、scala 和 R。然后呢?对于我们许多学习过函数式编程语言的人来说,循环是 2009 年之前的事情。理解是合法的集合处理(虽然有点倒退并且没有链接)。因此,探索他们可以做什么的界限是有意义的。当 python 是我们需要使用的工具时,询问它们是完全有意义的。
  • @StephenBoesch:链接本身并不是一个目标,当然也不是一个值得为之建立一堆垃圾列表的目标。
  • @user2357112supportsMonica“垃圾清单”。此评论反映了对数据处理管道领域的了解不足(无论您是否有这种经验,评论中都没有显示)。另见stackoverflow.com/questions/49001986/…。链接提供了一种易于阅读且高效的方法来执行一系列操作。十几行可以显示十几个操作:清晰易读、快速编写和可维护。
  • @StephenBoesch:我不知道你认为Nones 的巨大、未使用、三重嵌套列表如果不是垃圾的话。

标签: list list-comprehension


【解决方案1】:

2 周假期后头脑清醒,我花了 +-30 分钟才得到答案。

准备好更多的巢穴:

answer = [[[print(y) if type(y) is not list else print(x) for x in y] if type(y) == list else print(y) for y in z]for z in nested_lista]

较短的结果相同:

answer2 = [[[print(x)  for x in y] if type(y) == list else print(y) for y in z]for z in nested_lista]

输出:

2
1
2
3
1
2
3
4
4
4
16
1
3

不知道为什么我得到了“ - ”。

【讨论】:

  • 很高兴看到你通过了这个。如果这看起来很难而且工作量很大?嗯,它确实是这两者。 Vanilla python 对于函数式编程来说是一种糟糕的语言,因为它不支持以链式方式在阶段之间传递结果,并且 lambdas 不支持多行或语句。有一些库可以减轻打击:看看fluentpyJulienPalard/pipeinfixpy 等。一些选项显示在我的问答中stackoverflow.com/a/49018515/1056563
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2021-02-13
  • 2014-11-18
  • 2015-06-24
  • 2013-01-29
相关资源
最近更新 更多