一、元组(tuple)

元组是一种一维的、定长的、不可变的Python对象序列。
1.创建
元组的创建有两种:其一是直接赋一组以逗号隔开的值;其二是调用tuple。用第二种方法可以使任何序列或迭代器转换成元组。
第一种方法示例: 

第二种方法示例:

2.元组的运算
这里我所说的元组的运算是指以下几种运算:
(a)元组的元素可以通过方括号[]进行访问,从0开始索引
示例: 

(b)元组可以通过加号+运算符连接起来以产生更长的元组
示例:

(c)对一个元组乘以一个整数,相当于是连接该元组的多个副本
示例: 

3.元组拆包
元组拆包是如果对元组型变量表达式进行赋值,Python就会尝试将等号右侧的值进行拆包。
示例: 

4.元组方法
由于元组的大小和内存不能被修改,所以其实例方法很少。最有用的是count,它用于计算指定值的出现次数。
示例: 

二、列表(list)

和元组相比,列表是可变长的,而且其内容也是可以修改的。
1.创建
列表的创建有两种:其一是用方括号[]直接赋值,赋一组以逗号隔开的值;其二是调用list函数进行定义。
第一种方法示例:

第二种方法示例: 

2.列表的运算
(a)通过append方法,可以将元素添加到列表的末尾
示例: 

(b)利用insert可以将元素插入到列表的指定位置
示例:

(c)pop用于移除并返回指定索引处的元素,与insert是互为逆运算
示例:

(d)remove用于按值删除元素,它找到第一个符合要求的值然后将其从列表中删除
示例: 

(e)通过in关键字,你可以判断列表中是否含有某个值
示例:

(f)和元组一样,列表可以通过加号+运算符连接起来以产生更长的列表
这个和元组一样,就不示例了。
(g)对于一个已定义的列表,可以用extend方法一次性添加多个元素
示例:

3.排序
调用列表的sort方法可以实现就地排序(无需创建新对象)
示例: 

sort还可以指定排序的规则。
示例:通过长度对一组字符串进行排序

4.二分搜索及维护有序列表
内置的bisect模块实现了二分查找以及对有序列表的插入操作。bisect.bisect可以找出新元素应该被插入到哪个位置才能保持原列表的有序性,而bisect.insort则确实地将新元素插入到那个位置上去。
示例:

注意:bisect模块的函数不会判断原列表是否是有序的,因为这样做的开销太大了。因此,将它们用于无序列表虽然不会报错,但可能会导致不正确的结果。
5.切片
通过切片,你可以选取序列类型(列表、元组、Numpy数组等)的子集。其基本形式为[start:stop],start处的元素是被包括在内的。而stop处的元素是未被包括在内的,所以结果中的元素数量是start-stop。start或stop都是可以忽略的,此时它们分别默认为序列的起始处和结尾处。
示例: 

切片还可以被赋值为一段序列。
示例:

还可以在第二个冒号后面加上步长。
示例:每隔一位取出一个元素
示例:在这里使用-1是一个很巧妙的办法,它可以实现列表或元组的反序。 

三、字典(dict)

字典是Python中最重要的内置数据结构,它是一种大小可变的键值对集,其中的键(key)和值(value)都是Python对象。

1.创建
字典的创建有两种:其一是使用大括号{}并用冒号分隔键和值;其二是从序列类型创建字典。
第一种方法示例:

第二种方法示例: 

2.字典的运算
(a)插入
示例:

(b)判断字典中是否存在某个键
示例:

(c)使用del关键字或pop方法(删除指定值之后将其返回)可以删除值
示例: 

(d)keys和values方法分别用于获取键和值的列表。虽然键值对没有特定的顺序,但这两个函数会以相同的顺序输出键和值。
示例: 

(e)利用update方法,一个字典可以被合并到另一个字典中去。若这两个字典中有重复的键,值会被替换成后面字典的值。
示例:

3.字典的有效类型
字典的键必须是不可变对象,如标量类型(整数、浮点数、字符串)或元组,但字典的值可以是任何Python对象。

四、集合(set)

集合是由唯一元素组成的无序集。

1.创建
集合的创建有两种:其一是用大括号{}包起来的集合字面量;其二是用set函数。
第一种方法示例: 

第二种方法示例: 

2.集合的运算
(a)集合支持各种数学集合运算,如并、交、差以及对称差等。
示例:

(b)你还可以判断一个集合是否是另一个集合的子集(原集合包含于新集合)或超集(原集合包含新集合)
示例: