关于python函数是编程的信息( 三 )


list支持切片操作,所谓的切片则是从原list当中 拷贝 出指定的一段 。我们用start: end的格式来获取切片,注意,这是一个 左闭右开区间。如果留空表示全部获取,我们也可以额外再加入一个参数表示步长,比如[1:5:2]表示从1号位置开始,步长为2获取元素 。得到的结果为[1, 3] 。如果步长设置成-1则代表反向遍历 。
如果我们要指定一段区间倒序,则前面的start和end也需要反过来,例如我想要获取[3: 6]区间的倒序,应该写成[6:3:-1] 。
只写一个:,表示全部拷贝,如果用is判断拷贝前后的list会得到False 。可以使用del删除指定位置的元素,或者可以使用remove方法 。
insert方法可以 指定位置插入元素 ,index方法可以查询某个元素第一次出现的下标 。
list可以进行加法运算,两个list相加表示list当中的元素合并 。等价于使用extend 方法:
我们想要判断元素是否在list中出现,可以使用 in关键字 ,通过使用len计算list的长度:
tuple和list非常接近 , tuple通过()初始化 。和list不同,tuple是不可变对象。也就是说tuple一旦生成不可以改变 。如果我们修改tuple , 会引发TypeError异常 。
由于小括号是有改变优先级的含义,所以我们定义单个元素的tuple,末尾必须加上逗号,否则会被当成是单个元素:
tuple支持list当中绝大部分操作:
我们可以用多个变量来解压一个tuple:
解释一下这行代码:
我们在b的前面加上了星号,表示这是一个list。所以Python会在将其他变量对应上值的情况下,将剩下的元素都赋值给b 。
补充一点,tuple本身虽然是不可变的,但是 tuple当中的可变元素是可以改变的。比如我们有这样一个tuple:
我们虽然不能往a当中添加或者删除元素,但是a当中含有一个list , 我们可以改变这个list类型的元素,这并不会触发tuple的异常:
dict也是Python当中经常使用的容器,它等价于C++当中的map,即 存储key和value的键值对。我们用{}表示一个dict,用:分隔key和value 。
对。我们用{}表示一个dict,用:分隔key和value 。
dict的key必须为不可变对象,所以 list、set和dict不可以作为另一个dict的key,否则会抛出异常:
我们同样用[]查找dict当中的元素,我们传入key , 获得value,等价于get方法 。
我们可以call dict当中的keys和values方法 , 获取dict当中的所有key和value的集合 , 会得到一个list 。在Python3.7以下版本当中,返回的结果的顺序可能和插入顺序不同,在Python3.7及以上版本中 , Python会保证返回的顺序和插入顺序一致:
我们也可以用in判断一个key是否在dict当中,注意只能判断key 。
如果使用[]查找不存在的key,会引发KeyError的异常 。如果使用 get方法则不会引起异常,只会得到一个None :
setdefault方法可以 为不存在的key 插入一个value,如果key已经存在,则不会覆盖它:
我们可以使用update方法用另外一个dict来更新当前dict,比如a.update(b) 。对于a和b交集的key会被b覆盖,a当中不存在的key会被插入进来:
我们一样可以使用del删除dict当中的元素,同样只能传入key 。
Python3.5以上的版本支持使用**来解压一个dict:
set是用来存储 不重复元素 的容器,当中的元素都是不同的,相同的元素会被删除 。我们可以通过set(),或者通过{}来进行初始化 。注意当我们使用{}的时候,必须要传入数据,否则Python会将它和dict弄混 。
set当中的元素也必须是不可变对象 , 因此list不能传入set 。
可以调用add方法为set插入元素:

推荐阅读