【发布时间】:2015-12-02 06:00:44
【问题描述】:
我来自 Java 背景,刚刚开始使用 Python。大多数事情都相当容易掌握,但我很难用我刚刚发现的语言理解一件事,那就是列表理解。 Python 中的列表理解 是什么?这与 Java 中的语言结构相比如何?问题是它无处不在,我在这里和那里找到的几乎所有示例都使用它。
对于以下示例,请允许我了解其工作原理。
[x**2 for x in range(10)]
然后就是这个。
[j + k for j in 'abc' for k in 'def']
除此之外,我还在 Stackoverflow 的某个地方看到过类似的事情。
(x for x in (0,1,2,3,4))
还有这样的事情。
total = sum(x+y for x in (0,1,2,3) for y in (0,1,2,3) if x < y)
这开始变得一团糟,你能帮帮我吗?
【问题讨论】:
-
你试过在你的 python shell 中运行这些吗?列表推导式是一种生成列表的方式。
-
您到底对什么感到困惑?当您在
[]中有这种类型的表达式时,它是一个“列表理解”,在{}中是一个“字典理解”,在()中是一个“生成器表达式”,但它们的工作方式都相似,只是最后的类型不同。 -
如果您没有开始学习新语言,您可能很容易说,但我已经检查了其他答案。我真的很想明白这一点:(
-
这有点烦人,我写了一个很长的答案,从 Java 的角度解释了它是如何工作的,但是在我发布之前它就关闭了。 Python 和 Java 对这类问题的处理方式截然不同。
-
不能再同意了。我们应该更受欢迎,否则#SOreadytohelp 标签就没有多大意义了,对吧?
标签: python