微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当list用于函数的参数时 Q.关于python 3中的内存堆栈和堆

如何解决当list用于函数的参数时 Q.关于python 3中的内存堆栈和堆

def first(a):

cnt=0
if a[0]==1:
    a[0]=0
else:
    a[0]=1

for i in range(1,len(a)):
    if a[i] != a[i - 1]:
        continue
    else:
        if a[i - 1] == True:
            a[i] = 0
        else:
            a[i] = 1
        cnt += 1
return cnt

def second(a):
    cnt=0
    for i in range(1,len(a)):
        if a[i] != a[i - 1]:
            continue
        else:
            if a[i - 1] == True:
                a[i] = 0
            else:
                a[i] = 1
            cnt += 1
    return cnt

def solution(A):

    ans=first(A)
    ans2=second(A)

    return min(ans2,ans)

    print(solution([1,1,1]))

嗨,我做了3个函数,我认为列表“ A”将存储在堆栈存储器中并复制函数“ first”的参数

所以我认为在“第一个功能“ A”运行后,A不会被更改

但“第一次”运行后A发生了变化

(这意味着[1,1]更改为[1,1],因此当运行“ second”时,列表“ A”被置为[1 ,0,1] 不是原始列表“ A”([1,1]))

为什么会这样?

与此不同吗?

def swap(a,b):
    tmp=a
    a=b
    b=tmp


def solution(a,b):
    swap(a,b)
    print(a,b)

solution(1,2) # answer is 1,2

在这种情况下,a,b不变

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。