对一个变量a使用copy()方法得到c后,修改其a的内容,变量c竟然也会跟着变,是什么原因呢
a=[['43', '30', ''],
['07', '30', ''],
['14', '30', ''],
['15Y', '30', ''],
['22', '30', ''],
['37Y', '30', ''],
['45', '30', '']]
b=a
c=a.copy()
print('a',a)
print('b',b)
print('c',c,'\n')
def get_gps(a):
a1=a.copy()
gps=[]
for i in a1:
if 'Y'in str(i[0]):
gps.append(a1.index(i))
i[0]='0'
return gps
get_gps(a)
print('a',a)
print('b',b)
print('c',c,'\n')
c.append(['0','0','0'])
print('a',a)
print('b',b)
print('c',c,'\n')
运行的结果竟然是a、b、c三个变量都跟着产生了变化,b跟随a变化可以理解,c不是copy的另一个独立的变量了吗?
.
.
.
.
解决思路:一开始是直接用for循环在全局运行,发现了这个问题后,我考虑到可能是因为for的循环会强制全局相同的变量一起更改,于是我把这个for改写成一个def函数,运行结果也是一样,我不明白。我想要复制一个a的副本来做其他操作而不影响a的值