python基础知识-容器
序列是python中最基本的数据结构,序列中的每个元素都分配一个数字–它的位置,或索引,第一个索引是0,第二个索引是1,以此类推。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外python已经内置确定序列的长度以及确定最大和最小的元素的方法。
1.列表(list)
(1)认识列表
1)列表是最常用的python数据类型,它以方括号作为标志出现,里面的多个数据用逗号隔开。列表的数据项不需要具有相同的类型。创建一个列表们只要把逗号分隔的不同的数据项使用方括号括起来即可,如果要同时处理多个数据,可以考虑列表。
2 )列表是可变的(可变是指列表元素的个数和元素的值可变–列表支持增删改)
3)列表是有序的(元素有顺序对应的位置信息;元素的顺序影响结果–列表支持下标操作)
4)列表对元素的要求:没有要求(任何类型的数据都可以作为列表的元素)
注:元素 —容器中每一个独立的数据,就是这个容器的元素
(2)创建列表
变量名=[数据项1,数据项2,·····,数据项n];括号中的数据可以是任何数据类型,但数据有位置(索引),相同的元素在不同的位置都是不一样的([10,20,30]!=[30,10,20]),因为列表中的下标都是从0开始,顺序改变下标所对应的值也会改变。
注意:列表中加一个空格也是一个空列表
1)一个列表中的元素可以是多个相同类型的数据
list1=[10,20,30]
2)一个列表中的元素可以是多个不同类型的数据
list2=[10,20,'xiaohua',True]
3)列表中的元素也可以是列表
list3=[10,20,[80,600]]
#列表中的元素个数有三个
(3).列表的查询
1)查单个:获取一个元素
a.语法:列表[索引]–获取列表中指定索引对应的元素
b.说明:
列表-需要获取元素的列表对象(可以是保存一个列表的变量,,也可以是具体的列数据)
[ ]-固定写法
索引-又叫下标,指的是元素在列表中的位置(从0开始),列表一旦确定,列表中的每个元素的对应的索引就确定了(元素从前往后索引从0开始不断递增;元素从后往前从-1开始不断减少)
nums=[1,2,3,4]
print(num[0])
#结果
1
print([10,20,30,40][1])
#结果
20
2)切片:同时获取多个元素(列表的结果还是列表)
a.完整的语法:
列表[开始下标:结束下标:步长]
列表-需要获取的元素列表
[ ]-固定写法
开始下标,结束下标,步长-必须是整数
开始下标-决定从哪里取(可以为负)
结束下标-取到哪里结束(可以为负)
步长-如何取(一个一个按顺序取还是跳着取;从前往后还是从后往前)
b.切片的结果
-
第一步:先确定结果是否为空,看开始下标的对应的位置到结束下标对应的位置的方向和步长的方向是否一致,一致结果不为空,不一致结果为空(例:[5,0,2]从下标为5开始到0的位置,从后往前,但步长的方向是从前往后,方向不一致,结果为空)
-
第二步:如果结果不为空,再确定切片的有效范围:开始下标对应的元素能取到,结束下标对应的元素取不到
-
第三步:在有效范围内,按照步长的返方向和绝对值获取元素(方向:步长为正,从开始下标到结束下标从前往后取;步长为负就从后往前;绝对值:绝对值为1,就一个一个的取,绝对值为2,取一个跳一个再取一个…)
movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟'] print(movies[1:-1:1])#['霸王别姬','阿甘正传','钢铁侠','蜘蛛侠','蝙蝠侠','蚁人','雷神'] print(movies[-1:1:-2])#['复仇者联盟','蚁人','蜘蛛侠','阿甘正传'] print(movies[-2:5:2])#[] 开始下标和结束下标的方向与步长方向不一致,结果为空 print(movies[0:-2:4])#['肖申克的救赎','蜘蛛侠'] print(movies[5:-1:2])#['蝙蝠侠','雷神'] print(movies[6:-6:-1])#['蚁人','蝙蝠侠','蜘蛛侠']
c.怎么写切片代码获取指定元素
-
确定开始下标:需要的结果中的第一个数据再列表的下标
-
确定结束下标:结束下标是结果中最后一项的后一个数据或者前一个数据的下标
-
确定步长:正负看趋势(从前往后还是从后往前);再看绝对值(看取得时候是一个一个的取还是跳着取)
# ['肖生克的救赎', '钢铁侠', '蚁人'] # ['复仇者联盟', '雷神', '蚁人', '蝙蝠侠'] # ['钢铁侠', '霸王别姬'] # ['雷神', '蝙蝠侠', '钢铁侠'] # ['霸王别姬', 蝙蝠侠'] print(movies[0: -2: 3]) print(movies[-1: -5: -1]) print(movies[3: 0: -1]) print(movies[-2: -7:-2]) print(movies[1: 6:4])
d.切片省略的写法
- 省略步长-相当于默认步长为 +1:列表[开始下标:结束下标]–注意看步长的
- 省略开始下标:列表[:结束下标:步长]–获取元素从头开始(步长为正,从第一个元素开始取,步长为负,从最后一个元素开始取)
- 省略结束下标:获取元素从开始下标开始,取完为止(有可能是第一个,也有可能是最后一个,看步长的方向)
3)遍历:一个一个的获取列表中的所有元素
-
方法1:直接获取元素
for 变量 in 列表:
循环体(变量依次获取到的就是列表中的每个元素)
count=0 score=[88,69,91,94,78,85] for x in score: if x>90: count+=1 print(count) #结果 2
-
方法2 :通过获取所有元素的下标来获取元素
for 变量 in range(len(列表长度)):
循环体(列表[变量])
-
for i in range(len(score)):
print(i,score[i])
#结果
0 88
1 69
2 91
3 94
4 78
5 85
-
方法3
for 变量1,变量2 in enumerate(列表):
print(变量1,变量2)
其中还变量1是下标,变量2是数据
score=[88,69,91,94,78,85] for index,num in enumerate(score):#其中index是下标,num是数据 print(index,num) #结果 0 88 1 69 2 91 3 94 4 78 5 85
(4)列表元素的修改
1)列表元素的增加
-
列表.append(元素)–在指定列表最后添加指定的元素(不会产生新的元素,而是直接在原列表中添加)
#案列1 heros=["亚瑟","王昭君","芈月","铠","宫本"] print(heros) heros.append("鲁班") print(heros) #结果 ['亚瑟', '王昭君', '芈月', '铠', '宫本'] ['亚瑟', '王昭君', '芈月', '铠', '宫本', '鲁班'] #案列2:将不及格的数提取出来(先创建一个空列表,在原有的列表中进行循环,循环到不及格的分数就将其添加到空列表中) score=[
-