我有一份清单:
l = [1,2,3]
我希望我的输出是:
^{pr2}$我编写了这个函数,它运行得很好:
def matrixer(l):
matrix = []
for data in l:
column = []
column.append(data - l[0])
column.append(data - l[1])
column.append(data - l[2])
matrix.append(column)
return matrix
但这并不能很好地扩展,因为我的列表最多可以有100个值,我不想继续为列表中的每个值添加下面的代码行:
column.append(data - l[n])
我以前从未使用过发电机,但听起来解决方案可能需要一个。我一直在尝试一个while循环,但由于遇到了相同的问题,它并不能让我达到目的。在
双列表理解可以在一行中完成:
输入结果:
^{pr2}$列表理解是高度优化的内存方面(更少的重新分配)和CPU方面的(更少的指令),所以用2个嵌套的列表理解代替你的双循环+append将大大提高你的代码速度。在
使用两个for循环,我们必须每次重置
sub_answer
。这看起来很混乱,所以可能还有另一个选择;可以在下面找到:移除用于列表理解的for循环。现在我们不需要
^{pr2}$sub_answer
:l
是可缩放的。我们迭代列表,然后将其附加到使用列表理解创建的新列表中,我们通过再次遍历列表来减去each
变量。在{cd6>如果我们变成{cd6}:
作为注释
(3-1 is not -2... it's 2....)
我们用一个列表理解为什么不用两个?!?!?!: 如果不需要for循环而只想使用列表理解:
给出了相同的结果,但我认为如果您正在学习或在团队中学习,for循环更具可读性。在
简短的回答(目前为止最短的)是:
它使用list comprehension。在
相关问题 更多 >
编程相关推荐