目录
容器类型可以视作一个数据收纳盒(用来收纳数据对象的数据类型)
可以以一种规则的下标索引方式(收纳盒名字+数字序号)访问到每一个数据
这种收纳盒都是序列
一、列表
1.创建
方括号法[ ]、指明类型法 list()
2.内容
保存的每一个数据都是一个元素(element),类型没有限制
3.操作
增长:
append操作/insert操作/extend操作
缩减:
pop操作/remove操作/clear操作
重新组织:
reverse:把数据的顺序倒过来排列
sort:把数据按从小到大顺序排列
reversed/sorted重新排列但不影响原列表,只是给出一个新列表
详细:
合并:
加法+:连接两个列表
乘法*:复制n次,生成新列表
大小:
len():列表中元素的个数
索引:
alist[n] (可根据需要再赋值)
切片:
alist[start : end : step](与字符串切片一致)
查找:
in操作:判断某个元素是否存在与列表中
index操作:指定的数据在列表的哪个位置
count操作:指定的数据在列表中出现了几次
计算:
sum函数:将列表中所有的数据元素累加
min/max函数:返回列表中最小/最大的数据元素
二、元组
1.创建
圆括号法()、指明类型法tuple()
2.内容
保存的每一个数据都是一个元素(element),类型没有限制
3.操作
合并:
加法+:连接两个元组
乘法*:复制n次,生成新元组
大小:
len():元组中元素的个数
索引:
atuple[n] (不可根据需要再赋值)
切片:
atuple[start : end : step](与字符串切片一致)
查找:
in操作:判断某个元素是否存在与元组中
index操作:指定的数据在元组的哪个位置
count操作:指定的数据在元组中出现了几次
计算:
sum函数:将元组中所有的数据元素累加
min/max函数:返回元组中最小/最大的数据元素
三、字典
1.类比
数据收纳盒中放着数据,我们可以给每一份数据贴标签,就像字典中汉字与拼音的关系
2.内容
保存着一系列key-value对(可以通过key来索引元素value)
value没有顺序,可以为任意类型
key是任意不可变类型(数值/字符串/元组)
3.创建
花括号法{ }、指明类型法 dict()
4.数据项
每个key-value对都是一个数据项
key与value间用“:”连接
5.批量添加数据项
student = dict.fromkeys(("name","age"))
6.操作
合并/增长:
update方法
缩减:
del操作:删除指定key的数据项
pop操作:删除指定标签的数据项并返回数据值
popitem操作:删除并返回任意一个数据项
clear操作:清空字典
大小:
len():返回数据项个数
索引:
标签索引:dict[key](可用于获取指定key值的数据值或更新数据值)
keys函数:返回字典中的所有key
value函数:返回字典中所有数据值
items函数:以二元元组形式返回所有数据项
in操作:判断字典中是否有 该key(可以与value函数结合判断是否有该value)
四、集合
1.概念
字典去除所有数据值(value),留下的key组成集合
2.特点
不重复元素的无序集合
3.创建
花括号法{ } 、指明类型法set()
用set()可创建空集
用set()可从其他序列转换生成集合
集合会自动忽略重复的数据
集合中不能加入可变类型数据
4.操作
增长:
add:添加一个数据
update:批量添加数据
缩减:
remove/discard:删除指定数据
pop:删除任意数据并返回值
clear:清空集合
大小:
len函数
5.访问
in:判断元素是否属于集合
pop:删除数据元素的同时,返回它的值
取遍所有数据元素后,集合成为一个空集
可以用copy操作先给集合制作一个”替身“
迭代循环:for i in aset:
6.运算
生成新集合运算
关系判定:
<,<=,>=,>分别对应子集/真子集/真超集/超集
交集:
isdisjoint():判断两集合交集是否为空
五、可变类型与不可变类型
1.不可变类型数据
一旦创建无法修改数据值的数据类型
数值、逻辑值、字符串、元组
2.可变类型数据
可以随时改变的数据类型
列表、字典、集合
一旦数据值改变,那该数据值对应的所有标签的内含数据值都改变
六、建立复杂的数据结构
列表、元组、字典可以相互嵌套
七、输入和输出
1.输入(input)
input():()里可以填写提示信息(用” “括起来)
该函数返回的是字符串,可通过强制类型转换改变(例如:x=int(input()))
2.输出(print)
print([objct,......][,sep=' '][,end=' '][,file=sys.stdout]):
sep表示变量之间用什么字符串隔开,缺省是空格:
end:表示以该字符串结尾,缺省为换行
file:指定了文本将要发送到的文件、标准流或其他类似的文件的对象,默认为sys.stdout
3.格式化字符串
相当于C语言中的&a,%d,%s等
’%d %s' % (v1,v2)
八、上机练习
第一个:列表、元组操作
list1 = [1,2,3,4,5,6]
list2 = ['a','b','c','d','e','f']
print(list1 +list2)
print(list1 *2)
print(len(list1))
print(list1[0],list2[0],list1[5],list2[5],list2[-2],list2[-1],list1[-2],list1[-1])
list1=[1,2,3,4,5]
list2=['a','b','c','d','e']
tuple1=(1,2,3,4,5)
print(list1[1:4])
print(list1[2:5])
print(list1[-3::-1])
print(list1[0:6:2])
print(tuple1[1:4])
print(tuple1[2:5])
print(tuple1[-3::-1])
print(tuple1[0:6:2])
t='Mike and Tom'
print(t.split())
print('/' .join(['Mike','and','Tom']))
第二个: 集合与字典操作
a=set([1,2,3,4,5])
b=set([2,4,6,8,10])
print(a&b)
print(a|b)
print(a-b,b-a)
print(a ^ b)
print(a.add(6),a)
print(a.update([6,7,8,9]),a)
print(a.remove(4),a)
print(3 in a)
print(len(a))
print(a.clear())
print(len(a))
dict1={1:'Mon','line1':3332}
dict1[2]='Tus'
print(dict1)
del dict1[2]
print(dict1)
print(len(dict1))
print(dict1.keys(),dict1.values())
print(dict1.items())
print('Mon'in dict1,1 in dict1)