簡體   English   中英

否定2D數組中的所有列表值

[英]Negate all list values in a 2D array

我的腳本的以下兩個版本可以正常工作:

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 即使將其分配給相同的變量,解決方案也不是就地。

您可能想要的是矢量就地解決方案。 這受numpy支持:

import numpy as np

arr = np.array([[1, -2, 3], [-4, 5, -6], [7, -8, 9]])

arr *= -1

# array([[-1,  2, -3],
#        [ 4, -5,  6],
#        [-7,  8, -9]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM