试图保持列表的原始值

2024-10-01 11:33:56 发布

您现在位置:Python中文网/ 问答频道 /正文

忽略代码,它工作得很好,但问题是当我有一个t列表,我需要它的值为一个过程,所以我做的是我做了一个新的空列表(aux),并把t值放在里面,这样原始列表就不会被改变,但它仍然会因为某种原因,这是代码

def listeDesTermes(k):
    Un = 0 
    t = [1,1]
    i=2
    while Un < k:
        Un = t[i-1] + t[i-2]
        t.append(Un)
        i=i+1
    return(t[0:len(t)-1])
#---------------
def Maximal (t) : 
    Maximal = 0
    for i in range(1,len(t)) :
        if t[i] > t[Maximal] :
            Maximal = i
    return(Maximal)
#--------------- 
def DecompsitionK(k,aux):
    s= 0
    Tdecomp = []
    while not k == s :
        maximum = Maximal (aux)
        if s + aux[maximum] <= k :
            s = s+aux[maximum]
            Tdecomp.append(aux[maximum])
            aux[maximum] = -69
        else : 
            aux[maximum] = -69
    return(Tdecomp)
#--------------- 
def conctenationT(t,Tused):
    for i in range(len(t)):
        if t[i] in Tused :
            t[i] = str(t[i])+"1"
        else:
            t[i] = str(t[i])+"0"
#---------------    
t=listeDesTermes(50)
# problem starts here 
aux = t
print(t)
Tused=(DecompsitionK(50,aux))
conctenationT(t,Tused)
print(t)

Tags: 代码in列表lenreturnifdefun
1条回答
网友
1楼 · 发布于 2024-10-01 11:33:56

在python中,变量是通过引用而不是通过值保存的。因此,为了创建一个不可变的副本,在您的特定情况下-一个列表,您必须使用list-copy()的方法,或者使用来自模块copy的函数copy。(copy.copy,还有copy.deepcopy也复制子列表)。 您需要编辑代码以:

aux = t.copy()

它应该会起作用

相关问题 更多 >