一个数组赋值给另一个数组

JavaScript把一个数组赋值给另一个数组

把数组map的内容全部赋值给另一个数组a,当一个数组a改变的时候,map也发生了变化,该如何解决?

var map = new Array("china","america","japan","canada");
var a = map;
a.unshift("aa");
console.log(a);
console.log(map);
// a 结果[ "aa", "china", "america", "japan", "canada" ]
//map结果[ "aa", "china", "america", "japan", "canada" ]

改变数组a,原来的数组map也发生了变化。这是因为JavaScript存储对象时存储的是地址,var a = map浅拷贝导致 map 和 a 指向同一块内存地址,所以产生这样的现象。
解决方法:深拷贝(slice、concat)

var map = new Array("china","america","japan","canada");
var a = [].concat(map);//或者a = map.slice(0)效果相同
a.unshift("aa");
console.log(a);
console.log(map);
// a 结果[ "aa", "china", "america", "japan", "canada" ]
//map结果[ "china", "america", "japan", "canada" ]

python把一个数组赋值给另一个数组

注:python中数组一般指list(列表)类型。

两个列表list1和list2,直接用等号赋值,list2修改后,list1也会被修改。

list1 = ['zz','age','6']
list2 = list1
list2[0] = 't'
print(f'list1:{list1}\nlist2:{list2}')

运行结果:
list1:[‘t’, ‘age’, ‘6’]
list2:[‘t’, ‘age’, ‘6’]

想要不改变原列表,使用[:]或者.copy()

list1 = ['zz','age','6']
list2 = list1[:] #list1.copy()有同样效果
list2[0] = 't'
print(f'list1:{list1}\nlist2:{list2}')

运行结果:
list1:[‘zz’, ‘age’, ‘6’]
list2:[‘t’, ‘age’, ‘6’]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值