python中list_python中的list1 = [] list2 = []和list1 = list2 = []有...

在以下情况下,您将创建一个列表,并使其指向2个变量;即2引用同一对象:

list1 = list2 = [123] * 3

list1.append(456)

print list1 => # prints [123, 123, 123, 456]

print list2 => # prints [123, 123, 123, 456]

print list1 is list2 # prints True

而这将创建2个新列表,并将一个分配给list1,将另一个分配给list2:

list1 = [123] * 3

list2 = [123] * 3

# or list1, list2 = [123] * 3, [123] * 3

list1.append(456)

print list1 # prints [123, 123, 123, 456]

print list2 # prints [123, 123, 123]

print list1 is list 2 # prints False

这与是否通过引用复制或存储值有关.对于整数和字符串之类的不可变对象,这无关紧要:

# a and b contain the same int object

# but it's OK because int's are immutable

a = b = 1

a += 2 # creates a new int from 1+2 and assigns it to `a`

print b # => 1 ... b is unchanged

print a # => 3

换句话说,int(nor浮点数或strs等)没有改变您调用该方法的值的方法.相反,它们都返回该类型的新实例;因此-5返回一个新的int -5而不是已修改的现有int 5;同样,a = 2等效于a = a 2,其中a 2(即在a上调用__add__的方法)返回一个新的int,其值是2,对该值的引用被分配回a.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值