数据类型 | 定义符号 | 访问元素 | 是否可变 | 是否重复 | 是否有序 |
列表 | [ ] | 索引 | 可变 | 可重复 | 有序 |
元组 | () | 索引 | 不可变 | 可重复 | 有序 |
字典 | {key:value} | 键 | 可变 | 可重复 | 无序 |
集合 | { } | 可变 | 不可重复 | 无序 |
在形式上,元组的所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素则必须在最后增加一个逗号。(6,)严格来说,是逗号创建了元组,圆括号只是一种好看的形式辅助。可以把元组看作是轻量级列表或简化版列表,支持很多和列表类似的操作,但功能要比列表简单得多。
元组创建与元素访问
除了把元素放在圆括号内表示元组之外,还可以使用内置函数tuple()把列表、字典、集合、字符串、range对象、map对象、zip对象、filter对象以及其他类型的容器类对象转换为元组。元组属于有序序列,支持使用下标和切片访问其中的元素。
元组与列表的区别
列表和元组都属于有序序列,都支持使用双向索引访问其中任意位置的元素,以及使用count()方法统计指定元素的出现次数和index()方法获取指定元素的索引。
元组属于不可变序列,不可以直接修改元组中元素的值,也无法为元组增加或删除元素,元组没有提供append()、extend()和insert()等方法,无法向元组中增加元素。同样,元组也没有remove()和pop()方法,不能从元组中删除元素,
元组的访问速度比序列更快,开销更小。
作为不可变序列,与整数、字符串一样,元组可以作为字典的键,也可以作为集合的元素。列表则不能,因为列表是可变的。
切片语法与应用
切片是用来获取列表、元组、字符串等有序序列中一部分元素的一种语法。在语法形式上,切片使用2个冒号分隔的3个数字来完成。
[start : end : step]
start表示切片开始位置,默认为0;end表示切片截止(不包含)位置,当step是正数时end默认列表长度,当step是负数时end默认为-1;step表示步长(默认为1),省略步长时还可以同时省略最后一个冒号。当step为负整数时,表示反向切片,这时start应该在end的右侧(但还是从左到右输出)。
切片操作使用与列表、元组、字符串和range对象
切片得到的是原列表的浅复制
使用切片为列表增加元素、替换和修改元素、删除元素
等号左侧切片不连续时,两边长度不一样则会报错
#使用切片删除列表中的元素 使用切片限定列表中部分元素位置,赋值为空列表可以删除这些元素,此时要求切片是正向连续的,也就是step必须为1.也可以结合del命令与切片结合来删除列表中的部分元素,此时切片可以不连续。
序列解包
序列解包的本质是对多个变量同时进行赋值,也就是把一个可迭代对象中的多个元素的值同时赋值给多个变量,要求等号左侧变量的数量和等号右侧值的数量必须一致。
序列解包也可以用于列表、元组、字典、集合、字符串以及enumerate对象、filter对象、zip对象、map对象等,但对字典使用时,默认是对字典“键”进行操作,如果需要对“键:值”元素进行操作,需要使用字典的items()方法说明;如果需要对字典“值”进行操作,需要使用字典的values()方法明确指定。