【发布时间】: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 的巨大、未使用、三重嵌套列表如果不是垃圾的话。