【问题标题】:How to replace value in list of lists - Python如何替换列表列表中的值 - Python
【发布时间】:2022-11-10 21:29:02
【问题描述】:

大家好,这是我的第一个问题,所以请告诉我如何改进提问:),

我正在尝试运行此代码,但没有得到预期的结果。

我认为问题在于我正在编辑列表列表中的值

编码 :

def f(x1,x2):
    return 1.5*(x1)**2+0.5*(x2**2)-x1*x2-2*x1
def f_tag_x1 (lst):
    x2=lst[1]
    x1=lst[0]
    return -((3*x1-x2-2)/3)
def f_tag_x2 (lst):
    x2=lst[1]
    x1=lst[0]
    return (x1-x2)
demsions=2
k=1
x=[[-2,4]]
ftags=[f_tag_x1,f_tag_x2]
while (k<3):
    x.append(x[k-1])
    for i in range(0,demsions):
        if i==0:
            x[k][i]=(x[k-1][i]+ftags[i](x[k-1]))
        else:
            x[k][i]=(x[k][i]+ftags[i](x[k]))
    k=k+1
    
        
print(x)

而不是一个列表中所有运行的结果 我只是得到相同的值(最后一个) 在所有列表中

例如 : 我明白了 [[x, y], [x, y], [x, y]]

代替

[[e, r], [h, j], [x, y]]

我认为这是因为我使用 x[k][i] 来获取列表中的每个元素并将其弄乱 但我找不到另一种方法

提前致谢 !

我曾尝试使用 x[k][i] 作为编辑列表列表的简便方法,但效果不佳

【问题讨论】:

    标签: python arrays list numpy append


    【解决方案1】:

    这是因为x.append(x[k - 1]) 每次都附加相同的列表,因此对一个子列表的每次更改都会更改所有子列表。改为附加副本

    while k < 3:
        x.append(x[k - 1][:])
        ...
    
    print(x) # [[-2, 4], [2.0, 2.0], [1.3333333333333335, 1.3333333333333335]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 2018-04-19
      • 2023-04-11
      • 2017-02-20
      • 2019-07-28
      • 2014-02-01
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多