数据类型分类
一:可变不可变
可变:列表,字典
不可变:数字,字符串,元组
二:存放值的个数
一个值:数字,字符串
多个值(容器类型):列表,元组,字典
三:取值方式
直接取值:数字
序列类型:字符串,元组,列表
映射类型:字典
可变或者不可变的定义:在id和type不变的情况下,值可变的数据是可变类型.id,type,value都不可变的是不可变类型
一、列表
特性:list中的元素可以随意删除增加且list的id和type不会改变,ist是一种可变类型.列表中的所有元素可以是 int 可以是 str 也可以是list(子列表).list中的值是有序的.
定义列表:l=[11,22,33,44,55,66]
取值:通过索引
print(l[1])
循环:
l=[1,2,3,[4,5]] c=len(l) for i in range(c): z=l[i] if type(z) is list:
#z是列表,z=[4,5] for j in range(len(z)): print(z[j]) else:
#z不是列表,直接打印 print(z)
列表的常用操作
切片
l=[11,22,33,44,55,66]
print(l[1:5])
追加
l.append() 向后追加元素
插入
l.insert(1,‘SB’) 在指定索引的位置插入值
删除
l.pop() 移除最后一个值 a=.pop() 在原列表中移除掉最后一个元素并赋值给a
显示索引位置
l.index() 获取指定元素的索引位置
包含
print(11 in l)
其他
.count() 查看有元素出现的次数
.extend() 批量添加元素
.remove() 移除某个元素
.reverse() 把所有元素顺序倒过来,反转
.sort() 排序
del 列表名[1] 删除索引指向的元素
#字符串——>数字 int(字符串)
二、元组
特性:元组内的所有元素不能更改,元素可以是任意数据类型
元组中可以包含list,元组中的list中的元素是可以更改的.当然list中也可以有元组.
定义元组
name_tuple = ('alex','eric')
索引
print(name_tuple[0])
len
print(name_tuple[len(name_tuple)-1])
切片
print(name_tuple[0:1])
for
for i in name_tuple:
print(i)
count:计算元素出现的个数
print(name_tupel.count('alex'))
index:获取指定元素的索引位置
print(name_tupel.index('alex'))
三、字典
{花括号} dict 可变类型,key不可变,value可变
字典定义的基本形式:key:value
定义字典需要注意:key必须是不可变类型,或者说是可hash类型
字典的取值,字典是无序的,不可用索引
字典的取值需要打印key
#字典的常用方法 #定义字典 d={'x':1,'y':12222} #长度 len(d) #新增 d['x']=2 print(d) #遍历 print(d.items()) for item in d.items(): #[('x', 1), ('y', 12222)] print(item) #以元组的形式取出键值对 for k,v in d.items(): #解压键值对 print(k,v) print(d.keys()) # 获取所有的key print(d.values()) # 获取所有的values print(d.itmes()) #获取所有的元素 查找 print(d.get('y')) print(d.get('y','找不到')) print(d.get('e','找不到')) 删除键值对 d.pop('x') print(d) 随机删除键值对 print(d.popitem()) print(d) 清除元素 d.clear() print(d) #快速产生字典 d1={} d2=dict() d3=dict(x=1,y=2,z=3) d4=dict({'x':1,'y':2,'z':3}) d5=dict([('x',1),('y',2),('z',3)]) d6={}.fromkeys(['name','age'],None) #把key的值都设置成None,用于创建初始的字典 print(d1,d2,d3,d4,d5,d6) #更新字典元素,覆盖 d={'name':'alex'} d1={'name':'alexsb','age':50} d.update(d1) print(d)
d.clera() #清楚所有内容
get 根据key获取值,如果key不存在,可以指定一个默认值
val = d.get('x') #获取age的对应值
val = d.get('age111','123') #获取age111的对应值,如果没有,默认就把123定义为val的值
索引取值时,key不存在报错
print(‘age’in info) #判断age是否存在于字典info
del d[‘x’] #删除字典里的指定元素
enumerate自动生成一列,默认从0开始,可以添加数字指定
四、集合
集合作用一:关系运算 集合作用二:去重 #定义集合: #集合内的元素必须的唯一的 #集合内的元素必须是可hash(不可变)的 #集合是无序的 s={'sam',123,'sam'} print(s,type(s)) #循环 s={'1',1,(1,2),'a'} for i in s: print(i) #关系运算 python_l={'egon','alex','铁蛋','老王'} linux_l={'alex','铁蛋','矮跟','欧德博爱'} #取共同部分:交集 print(python_l & linux_l) # #取老男孩所有报名学生:并集 print(python_l | linux_l) #取只报名了python和只报名了linux的学生:差集 print(python_l - linux_l) print(linux_l - python_l) # #取没有同时报名python和linux的学生:对称差集 print(python_l ^ linux_l) #集合方法 python_l={'egon','alex','铁蛋','老王'} linux_l={'alex','铁蛋','矮跟','欧德博爱'} print(python_l.difference(linux_l))#python -linux print(python_l.intersection(linux_l))#交集 print(python_l.union(linux_l))#并集 print(python_l.symmetric_difference(linux_l))#对称差集 python_l={'egon','alex','铁蛋','老王'} linux_l={'alex','铁蛋','矮跟','欧德博爱'} python_l.difference_update(linux_l) print(python_l) #对称差集并更新 s1={'a',1} s2={'a','b',2} s1.update(s2) print(s1) #把S2的内容更新到S1里 s1={1,2} s2={1,2,3} print(s1.issubset(s2))#子集 print(s2.issuperset(s1))#父集 s1={'a',1} s1.add(1) print(s1) #添加元素,元素存在不修改 s1.discard('a') #删除元素,元素不存在也不报错 s1.discard('b') print(s1) s1.remove('nnnnnn') #删除元素,元素不存在就报错 print(s1) s1={'a',1,'b','c','d'} print(s1.pop()) #.pop随机删除 print(s1) s1={1,2,'a'} s2={1,2,3} print(s1.intersection(s2)) #判断是否有交集,有则返回值 print(s1.isdisjoint(s2)) #判断是否没有交集,有则返回False s1={'a','b'} s2={'c','d'} print(s1.isdisjoint(s2)) #没有交集返回True
五、补充
变量的组成:变量名,赋值符号,变量值
在Python中数据又称为对象,每创建一个对象都会创建对象的id,type,值.
比较方法:
身份比较:is 比较的是变量值的id
值比较:== 比较变量的值
类型比较:type 比较变量的类型
变量的赋值:
链式赋值
a=b=c=d=1
多元赋值
xy的值互换
x = 1
y = 2
方法一:
z = x
x = y
y = z
方法二:
python中: x,y=y,x
增量赋值
x=1
x+=1
x-=1
x*=1
x/=1
解压序列类型:
s = 'hello'
a = s[0]
b = s[1]
a,b,c,d,e=s
只打印出 对应的 a 和 e的值,使用'_'来填充中间的变量, '_'约定俗称代表丢弃的变量
a,_,_,_,e = s
a,*_,e #使用*_ 代表中间全部