【《流畅的python》2.5-2.7节学习笔记】

前言

本文为《流畅的python》的2.5-2.7节的学习笔记。

序列的增量赋值


#可变序列
l = [1, 2, 3]
print(id(l))
l *= 3
print(id(l))

#不可变序列
l = (1, 2, 3)
print(id(l))
l *= 3
print(id(l))
>>>
2822868315208
2822868315208
2822868759104
2822868458616

说明:
序列的增量赋值,对于可变序列和不可变序列,增量赋值的结果是不一样的,对于可变序列,以列表为例,进行增量赋值后,查看其前后的id是一样的地址,即可变序列的增量赋值是在原地址上的’就地操作’,是对原可变序列的直接操作,原可变序列的内容会被修改,而不会创建一个同类型新可变序列;对于不可变序列,以元组为例,进行增量赋值后,查看其前后的id是不一样的地址,即不可变序列的增量赋值是创建一个新的同类型不可变序列,原不可变序列的内容不会被修改。
备注:对序列使用+和*操作,这两种操作,原序列不会被修改,而会创建一个新的同类型序列。注意这两种操作和增量赋值操作的差异。

list.sort方法与内置函数sort()


fruits = ['grape', 'raspberry', 'apple', 'banana']
sorted(fruits)
print(sorted(fruits))
print((fruits))
fruits.sort()
print((fruits))
>>>
['apple', 'banana', 'grape', 'raspberry']
['grape', 'raspberry', 'apple', 'banana']
['apple', 'banana', 'grape', 'raspberry']

说明:
此例用于说明list.sort方法和内置函数sorted的差异。
可以看到,前后分别打印了sorted(fruits)和fruits,而fruits的内容与原内容是一样的,即sorted(fruits)是新建一个列表,对原列表无影响。当fruits.sort()运行后,打印fruits的内容发现与原内容是不一样的,即fruits.sort()方法是对原列表的就地排序。

总结

  • 序列的+和*操作

序列的+和*操作是新建一个序列。

  • 序列的增量赋值

序列的增量赋值对于可变序列和不可变序列的结果是区别的。

  • list.sort方法和内置函数sort()

list.sort方法是对原序列的就地排序,而内置函数sort()会创建一个新序列用于返回排序结果,原序列的内容不会被修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值