python基础补习-赋值与copy,赋值注意事项

python基础补习-赋值与copy,赋值注意事项

1、赋值‘=’基础

​ python中 **=**是基本赋值运算符,是地址指针。

'''此时,通过=将10的地址指向给变量a'''
a = 10

2、连续赋值讨论

(1)重新赋值

a=b=10	# a,b指向值10
print(a,b)
'''[out:]10 10'''

b=5		# b指向值5
print(a,b)
'''[out:]10 5'''

可见,b重新赋值不会影响a。因为b重新指向。那么如果只是修改的话?

(2)多重赋值,修改问题

l1 = [1,2,3,4]	# l1指向列表
l2 = l1		# l2也指向列表
l2.remove(3)	#修改l2
#输出
print(l2)	
print(ll)

'''结果'''
[out:]
	[1, 2, 4]
	[1, 2, 4]

可见,虽然只是修改了l2,但是l1的值也发生了变化。其背后原因是:l2和l1指向的是一个地址,通过变量l2或l1进行如何列表修改(注意是修改,不是(1)中的重新赋值),都是对指向地址的修改,所以都会发生变化。

想传递值,而不是共享这个地址的值,可以使用.copy()

ll = [1,2,3,4]
l3 = ll.copy()
l3.remove(3)
print(l3,ll)

'''结果'''
[out:]
	[1,2, 4]   [1, 2, 3, 4]

(3)对多变量连续赋值

赋值有三种:

第一种可以通过:变量1,变量2,…变量n=长度为n的list,narry…;

第二种:变量1=变量2=…=变量n=值;

第三种:变量1,变量2,…变量n=值1,值2,…值n

两种赋值的区别在于,第一种要注意右边的必须有和前面变量数一样多值,否则会不匹配报错。第二种,连续赋值,n个变量都是指向那个值同(1)连续赋值。第三种就是按照位置一个一个对应赋值。

import numpy as np
# 第一种,右边的值有4个和右边2个变量不一样多会报错
t1,t2 = np.ones(4)
# 报错:ValueError: too many values to unpack (expected 2)

'''正确第一种'''
t1,t2 = np.ones(2)	# 列表同理
print(t1,t2)
# 输出结果:1.0 1.0
#可将,变量t1,t2是一个数

# 第二种
t1=t2 = np.ones(4)
print(t1,t2)
t2[2] = 4	#修改t2
print(t1,t2)
'''结果'''
[out:]
	[1. 1. 1. 1.] [1. 1. 1. 1.]
	[1. 1. 4. 1.] [1. 1. 4. 1.]
# 可见t1也被修改了,因为都是指向一个内容

#第三种
t1,t2 = np.ones(4),np.ones(4)
print(t1,t2)
t2[2] = 4
print(t1,t2)
'''结果'''
[out:]
	[1. 1. 1. 1.] [1. 1. 1. 1.]
	[1. 1. 1. 1.] [1. 1. 4. 1.]
# t1没有被修改,这种范式是将变量名分别指向,即使值相同。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值