这两种赋值方法有哪里不同啊


# 给定一个整数数组 A。定义 B[i]=A[0]*…*A[i-1]*A[i+1]*…*A[n-1]
# 即 B[i]为剔除 A[i]元素之后所有数组元素之积,计算数组 B 的时候请不要使用除
# 法,输出数组 B
A=eval(input())
sum=1
B=[]
for i in range(len(A)):
    temp=A
    temp.pop(i)
    for j in temp:
        sum*=j
    B.append(sum)
    sum=1
print(B)

这里会显示IndexError: pop index out of range

A=eval(input())
sum=1
B=[]
for i in range(len(A)):
    temp=A[:]
    temp.pop(i)
    for j in temp:
        sum*=j
    B.append(sum)
    sum=1
print(B)

temp的赋值方式不同 显示结果不同
pop不是把A中的值删除了吗 这两种赋值方式有什么地方不同啊

temp=A[:] 会拷贝一份A列表,temp操作不会改变原始列表A,而temp=A,只是将指针指向了A列表地址,temp操作会改变原始列表A。