我的问题是关于 Python List Comprehension 的可读性。当我遇到具有复杂/嵌套列表理解的代码时,我发现我必须重新阅读它们几次才能理解其意图。
是否有一种直观的方式来大声朗读列表理解?似乎我应该从中间开始“阅读”,然后阅读 if 条件(如果有),然后阅读 表达式 最后。
为了理解它,我将如何大声阅读以下代码行:
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
“对于列表 x 中的每个元素,以及列表 y 中的每个元素,如果两个元素不相同,创建一个元组列表。”
我正在努力解决的两个例子: 您将如何大声朗读以下列表理解?
来自 Stack Overflow 中的另一个问题:
[x for b in a for x in b]
Python 文档有这个例子:
[[row[i] for row in matrix] for i in range(4)]
非常感谢任何关于朗读列表理解的方法的建议或指示,以使意图变得更清晰。
最佳答案
我通常会在脑海中展开成一个生成循环,例如
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
是生成器的列表推导
for x in [1,2,3]:
for y in [3,1,4]:
if x != y:
yield (x, y)
示例 #1
[x for b in a for x in b]
是对
for b in a:
for x in b:
yield x
a = [[1,2,3],[4,5,6]]
的示例结果:[1, 2, 3, 4, 5, 6]
示例 #2
[[row[i] for row in matrix] for i in range(4)]
(注意内部表达式是另一种理解!):
for i in range(4):
yield [row[i] for row in matrix]
展开
for i in range(4):
l = []
for row in matrix:
l.append(row[i])
yield l
关于python - 如何大声朗读 Python 列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9061760/