以下两个版本的脚本按预期工作:
matrix = [[1, -2, 3], [-4, 5, -6], [7, -8, 9]]
def negate(amatrix):
for alist in matrix:
for i in range(len(alist)):
alist[i] = -alist[i]
return amatrix
print(negate(matrix))
收益率:[[-1,2,-3],[4,-5,6],[ - 7,8,-9]]
和这个版本一样:
matrix = [[1, -2, 3], [-4, 5, -6], [7, -8, 9]]
def negate(amatrix):
newmatrix = []
for alist in amatrix:
newlist = [-x for x in alist]
newmatrix.append(newlist)
return newmatrix
print(negate(matrix))
我正在尝试使用理解来更改适当的值,就像第一个版本一样。
我有这个:
matrix = [[1, -2, 3], [-4, 5, -6], [7, -8, 9]]
def negate(amatrix):
for alist in matrix:
alist = [-x for x in alist]
return amatrix
print(negate(matrix))
第三个版本确实否定了每个列表中的各个值,但是更改没有保存在矩阵中,即我希望列表值在适当的位置发生变化。
有没有办法使用理解来否定单个列表值,或者我是否必须使用索引版本(上面的第一个版本)?
列表推导不起作用。当你说x = [-i for i in x]
时,首先评估右侧并分配给x
。即使您将其分配给同一个变量,解决方案也不会就位。
您可能需要的是矢量就地解决方案。这是由qazxsw poi支持的:
numpy