我想了解嵌套列表的理解。下面,我列出了一个列表理解表达式及其for循环等效项。
我不知道我的理解是否正确。
例如,
[(min([row[i] for row in rows]),max([row[i] for row in rows]))
for i in range(len(rows[0]))]
相当于
result=[]
for i in range(len(rows[0])):
innerResult=[]
for row in rows:
innerResult.append(row[i])
innerResult2=[]
for row in rows:
innerResult2.append(row[i])
tuple=(min(innerResult), max(innerResult2))
result.append(tuple)
如果可以概括一下,我猜
[exp2([exp1 for x in xSet]) for y in ySet]
表格可以翻译为以下内容。(我希望我是对的)
result=[]
for y in ySet:
innerResult =[]
for x in xSet:
innerResult.append(exp1)
exp2Result = exp2(innerResult)
result.append(exp2Result)
对于更简单的情况,
[exp1 for x in xSet for y in ySet]
等于
result=[]
for x in xSet:
for y in ySet:
result.append(exp1)
而,
[[exp1 for x in xSet] for y in ySet]
等于
result=[]
for y in ySet:
innerResult=[]
for x in xSet:
innerResult.append(exp1)
result.append(innerResult)
我问了一个类似的问题,即用于复杂列表理解
的循环表达式的等效项。那里给出的答案是在理解了表单内部的内容之后重新构造了表单。
我想知道它是如何系统地工作的,因此我可以将该概念应用于其他稍有不同的示例。
cols = zip(*rows)
,在这之后,你可以简单地使用min(col)
,并max(col)
为每列:[(min(c), max(c)) for c in cols]
。或短短一行:[(min(c), max(c)) for col in zip(*rows)]
。