一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素,每一个元素可以是任意类型的数据,如,字符串、数字、布尔等。可以存储多个元素的python数据类型。
根据容器的特点:元素是否可以重复、是否可以修改、是否有序等分为以下五大类:
列表(list)
变量名=[元素1,元素2,....元素n]#元素可以为空
变量名=[[元素1,元素2...元素n],[元素1,元素2...元素n]....[元素1,元素2...元素n]]#嵌套列表
列表的下标的索引正反都可以取
s=[['name'],['num'],['hello'],]
print(s[0].index('name'),s[2],'\n')
print(s[1].index('num'),'\n')
print(s[-1][2])
注意:下标索引超出范围,或者查找的内容不在list会报错
列表的常用操作
函数是一个封装的代码单元,可以提供特定的功能。
在python中,如果将函数定义为class(类)的成员,那么函数就会称之为:方法
#函数
def add(x,y):
return x+y
#方法
class Student:
def add(self,x,y):
return x+y
在python中,将函数定义为class(类)的成员,那么函数称之为:方法
函数的使用
a=strlen('hello')
方法的使用
stu=Student()
n=stu.add(1,2)
列表的增删查改
查询元素下标
元素.index(索引)
修改特定位置(索引)的元素值
列表[下标]=值
str.replace('旧','新')
插入元素
列表insert(下标,元素)#在指定位置插入指定元素
l1=[1,2,3,4,6]
l1.insert(4,5)
print(l1)
追加一个元素
列表.append(元素) 将指定的一个元素,追加到列表尾部
l1=[1,2,3,4,5,6]
l1.append(7)
print(l1)
追加一批元素
列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部
l1=[1,2,3,4,5,6]
l2=[7,8,9,10]
l1.extend(l2)
print(l1)
删除指定下标索引的元素
语法1:del 列表[下标]
语法2:列表.pop(下标)
#删除列表元素
mlist=['1','a','c']
print (mlist)
#del 列表名[下标]
del mlist[0]
print(mlist)
#列表名.pop(下标)
mlist.pop(0)
print(mlist)
删除某元素在列表中的第一个匹配项
列表.remove(元素)
删除的是第一个指定的元素,如果没有该元素会报错
![](https://i-blog.csdnimg.cn/blog_migrate/90c5e9784519e21a56ee89e17b5bcc4d.png)
#删除列表中的某个元素
m=['aaaa','abbbb','bccccc','abcd']
print(m)
m.remove('aaaa')#一个单引号里的是一个元素
print(m)
n=[1,1,2,2,3,4,1,5]
print(n)
n.remove(1)
print(n)
清空列表
n.clear()
print(n)
统计某元素在列表内的数量
列表.count(元素)
n=[1,1,2,2,3,4,1,5]
print(n.count(1))
统计列表元素的数量
len(n)
n=[1,1,2,2,3,4,1,5]
# print(n.count(1))
print(len(n))
m='mylist'
print(len(m))
列表的综合案例运用
l=[21,25,21,23,22,20]
l.append(31)
print(l)
n=[29,33,30]
l.extend(n)
print(l)
l.remove(21)
print(l)
l.pop(8)
print(l)
m=l.index(31)
print(m)
列表的遍历--while循环
遍历是将容器内的元素依次取出,并处理。
while循环遍历列表元素
定义一个变量表下标,从0开始
循环条件为 下标值<列表元素数量
n=[1,2,3,4,5,6,7,8,9,11]
i=0
while i<10:
m=n[i]
print(m)
i+=1
列表的遍历--for循环
n=[1,2,3,4,5,6,7,8,9,11]
i=0
for i in range(1,11):
m=n[i]
print(m)
i+=1
n=[1,2,3,4,5,6,7,8,9,11]
i=0
for i in n:
print(i)
while循环可以自定义条件,并控制。可以通过条件做到无限循环,适合于任何想要循环的环境。
for循环不能自定循环条件,只可以从一个容器内取出数据,for循环理论上不可以,因为被遍历的容器容量不是无限的。for适用于容器场景简单的固定次数循环场景。
取出列表内的偶数
l=[1,4,6,4,3,8,9,11,15,14]
m=[]
for i in l:
if i%2==0:
m.append(i)
print(m)
n=[]
k=0
while k<len(l):
if l[k] % 2 == 0:
n.append(l[k])
k+=1
print(n)
![](https://i-blog.csdnimg.cn/blog_migrate/c77f378c3079107cd55879939dfae86b.png)
元组(tuple)
元组相当于一个只读的列表,一旦定义,不可修改。元组是用于封装数据,又不希望数据被篡改,元组非常合适。
元组定义:元组定义用小括号,且用逗号隔开各个数据,数据可以是不同的数据类型。同时,元组支持下标索引。
t1=()#空元组
print(type(t1),t1)
t2=(1,'mmm',True)#元组内数据类型可以不同
print(type(t2),t2)
l=[1,'1',True]#列表同理
print(type(l),l)
t3=tuple()
print(type(t3),t3)
t4=('mmm')
print(type(t4),t4)
t5=('mmm',)#','
print(type(t5),t5)
index、count、len、while、for的使用
n=(1,2,3,4,5,9)
print(n.index(3))
print(n.count)
print(len(n))
i=0
while i<len(n):
print(n[i])
i+=1
for j in n:
print(j)
t1=('周',11,['football',"music"])
print(t1[1])
print(t1[0])
del t1[2][0]
print(t1)
t1[2].append('coding')
print(t1)
![](https://i-blog.csdnimg.cn/blog_migrate/b68505c2feeaa45a4f99113c66c9b16c.png)
字符串(str)
支持下标索引
str1='i am a student'
#寻找下标索引
print(str1.index('a'))
print(str1.find('s'))
#字符替代
print(str1.replace('a','b'))
#统计某字符出现的次数
print(str1.count('d'))
#统计字符串长度
print(len(str1))
#split()方法分割,不会修改原字符串,会生成新的列表
#str.split(str="", num=分割次数)
str2='hello i am your father'
n_str2=str2.split(' ')
print(n_str2,type(n_str2))
#strip()方法【注】要注意的是该方法只能删除开头或结尾部分的字符,不能删除中间部分的字符
str3=' hello ! you are so fine '
print(str3)
n_str3=str3.strip()#不传入参数,去除首尾空格,也可以指定字符串
print(n_str3,'\n',type(n_str3))
n1_str3=str3.strip(" he ")#strip(需要移除的字符序列)
print(n1_str3)
练习
str1='you are a silly man'
print(str1.count('a'))
print(str1.replace(' ','|'))
n_str1=str1.split('|')
print(n_str1)
序列的常用操作---切片
序列:内容连续有序且支持下标索引的一类数据容器,例如列表、元组、字符串......
切片:从规格序列中取出一个子序列
语法:序列[起始下标:结束下标:步长]
集合(set)
集合没有重复元素,且内部无序,不支持下标索引。
语法:{元素1,元素2...元素n}
随机取出集合的元素、增加元素、移除元素
![](https://i-blog.csdnimg.cn/blog_migrate/4648836e84de02173a9340cf2581b398.png)
结果
![](https://i-blog.csdnimg.cn/blog_migrate/889729cf4ced1fd444e323ba430577b3.png)
清空集合
![](https://i-blog.csdnimg.cn/blog_migrate/7cea5d4e809fca9015264c2e33e4d953.png)
结果
![](https://i-blog.csdnimg.cn/blog_migrate/8d7f9e7feab0c62049a512f0291db893.png)
取出差集
![](https://i-blog.csdnimg.cn/blog_migrate/7408d6b61fb380d3eab5cbb741322e50.png)
结果
![](https://i-blog.csdnimg.cn/blog_migrate/87b6de22259f586260eaa4bbfb14a802.png)
消除差集
在s1里面消除和s2里面相同的元素
![](https://i-blog.csdnimg.cn/blog_migrate/fa36ff1e8d98474104f7b96dc8b944a2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/535bfdb76bcb22c37915a993484b6c9c.png)
两个集合合并
![](https://i-blog.csdnimg.cn/blog_migrate/c89828e573464a07b483ac08de549a05.png)
统计元素数量
![](https://i-blog.csdnimg.cn/blog_migrate/683ff87b8e85ff513a099b1c030c582f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6f879fabcdf3d7c18a08ed186fe5ea9e.png)
循环
集合不能用while,可以用for
![](https://i-blog.csdnimg.cn/blog_migrate/f84c2df47f2211f7bd7817cf3bdba9f6.png)
综合练习
![](https://i-blog.csdnimg.cn/blog_migrate/d456ed5676ace1884cd2c4866bbffa5c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d5c0883ca7022f6812f0d842dc1bd188.png)
字典(dict)
定义:字典名字={key:value,key:value,key:value...}
key和value可以为任意地数据类型,但是key不能为字典
空字典 字典名字={}
定义重复key的字典
![](https://i-blog.csdnimg.cn/blog_migrate/924d78a91fdf443010b4da2e2bed815e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5e5027e59b6c941bbaee36920240053d.png)
从字典中基于key获取value
字典也不支持下标索引,但是它可以通过key来取得对应的value
![](https://i-blog.csdnimg.cn/blog_migrate/3f133416c58d81a389957090195f45a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/944ead46880deca7ff9046574399c945.png)
定义嵌套字典
dict1={'张三':{
"语文":77,
"数学":99,
"英语":61},
'里斯':{
"语文":97,
"数学":99,
"英语":61},
'王二':{
"语文":87,
"数学":63,
"英语":71},
}
print(dict1)
从嵌套字典中获取数据
print(dict1['张三']['语文'])
新增元素
语法:字典[key]=value,结果是字典被修改,新增了元素
dict1['麻子']='1'
更新元素
语法:字典[key]=value,结果:字典被修改,元素被更新
注意:字典key不可以重复,所以对已存在的key执行上述操作,就是更新
dict1['张三']['总分']= {(77 + 99 + 61)}
print(dict1['张三'])
![](https://i-blog.csdnimg.cn/blog_migrate/0019f05f66b0c0949610ba665e06705a.png)
删除元素
dict1.pop('张三')
print(dict1)
清空元素
dict1.clear()
print(dict1)
获取全部的key
语法:字典.keys()
print(dict1.keys())
遍历字典
方法一:通过获取所有key来遍历
keys=dict1.keys()
for key in keys:
print(f'字典的key为{key}')
print(f'字典的value为{dict1[key]}')
![](https://i-blog.csdnimg.cn/blog_migrate/131df64078f55c65827d6e4f5354bf20.png)
方法二:直接循环
for key in dict1:
print(f'字典的key为{key}')
print(f'字典的value为{dict1[key]}')
字典由于不支持下标索引,故字典不可以使用while循环
统计字典元素数量
print(len(dict1))
综合测验
dict1={
'小王':{
'部门':'it',
'工资':3000,
'级别':1
},
'小周':{
'部门':'sc',
'工资':5000,
'级别':2
},
'小林':{
'部门':'sc',
'工资':7000,
'级别':3
},
'小张':{
'部门':'it',
'工资':4000,
'级别':2},
'小刘':{
'部门':'sc',
'工资':6000,
'级别':2},
}
# print(dict1)
for key in dict1:
if dict1[key]['级别']==1:
dict1[key]['级别']=2
dict1[key]['工资']+=1000
print(dict1)
总结
是否支持下标索引
支持:列表、元素、字符串-序列类型
不支持:集合、字典、-非序列类型
是否支持重复元素
支持:列表、元组、字符串、-序列类型
不支持:集合、字典-非序列类型
是否可修改
是:列表、集合、字典、
不是:元组、字符串