Python培训第四天笔记

一、上堂回顾

1.默写题目

1.求1~100之间能被6整除的数的和

2.打印九九乘法表

2.知识点回顾

1.运算符

​ 逻辑运算符:and or/;/p/ not

​ 短路原则

​ 成员运算符:in not in

​ 身份运算符:is is not

​ 比较的地址,类似于id()

​ 区别==的作用

2.循环语句

​ a.初始化表达式

​ b.条件表达式

​ c.循环体

​ d.循环之后的操作表达式

​ 死循环的写法

​ else分支【了解】

​ 嵌套循环【掌握,工作原理】

二、list列表

1.概念

变量:使用变量存储数据,但是,变量存储数据每次只能存储一个数据

问题:如果要一次性存储多个数据的,该怎么做?

#需求:存储5个人的年龄,求年龄的平均值
age1 = 10
age2 = 15
age3 = 30
age4 = 17
age5 = 24
avg = (age1 + age2 + age3 + age4 + age5) / 5

解决办法:采用列表

作用:相当于一个容器,可以同时存储多个数据

本质:列表是一种有序的集合

说明:有序指的是有顺序【存储的存放顺序和在内存中存储的顺序是相同的】

2.创建列表

num = 10

语法:

​ 变量名 = 列表

​ 列表名称 = [数据1,数据2.。。。。]

说明:

​ a.通过[]定义列表

​ b.列表中存储的数据被称为元素

​ c.列表中的元素会从头到尾进行编号,编号从0开始,这个编号被称为索引,角标或者下标

​ d.索引的取值范围:0~列表中元素的个数 - 1 【0~列表的长度- 1】

​ e.超过索引的范围:列表的索引越界

代码演示:

#1.创建空列表
#注意:列表的命名:一般情况下,使用listXxx  lxxx,不要直接使用list
list1 = []
print(list1)
​
#2.创建一个有元素的列表
list2 = [10,30,54,5,6]
print(list2)
​
#3.思考问题:在同一个列表中能不能存储不同类型的数据?---->能
list3 = [True,None,"hello",10]
print(list3)
​
#注意:将需要存储的数据存储到列表中,不需要考虑列表的大小,如果数据量很大的情况下,在进行存储数据的时候,列表会自动扩容

3.列表中元素的访问

3.1取值

代码演示:

#元素的访问
#1.取值
#语法:列表名[索引]
​
#索引:0~4
list1 = [543,5,46,56,6]
num1 = list1[2]
print(list1[2])
print(num1)
​
#列表索引越界
#print(list1[-10])  #IndexError: list index out of range
#print(list1[5])

3.2替换值

代码演示:

#2.替换值
#语法:列表名[索引] = 新值【列表中的元素本质上是一个变量,所以替换之的操作其实就是给变量重新赋值】
list1[2] = 100
print(list1[2])

4.列表的操作

代码演示:

#列表的操作
#1.列表组合:+
list1 = [54,5,45,4]
list2 = ["abc","fhj","ghfjg"]
#列表的组合并没有修改原来的列表,而是生成了一个新的列表
list3 = list1 + list2
print(list3)
print(list1)
print(list2)
​
#2.列表元素重复:*
#2.1列表中可以存储重复元素
l1 = [20,20,40,45,54,20]
print(l1)
#2.2
l2 = [10,20,30]
l3 = l2 * 3
print(l3)
​
​
#3.判断元素是否在列表中:成员运算符[in     not in]
#注意:成员运算符运算的结果为布尔值
#一般结合if语句使用
l4 = [34,54,56,"anc"]
print(34 in l4)
print(34 not in l4)
print(100 in l4)
print(100 not in l4)
"""
True
False
False
True
​
"""
​
#4.列表的截取【切片】
#4.1截取指定的区间:列表名[开始索引:结束索引]
#特点:涉及到区间,包头不包尾   前闭后开区间:[2,4)
l5 = [34,54,56,"anc",5,65,76,7677]
print(l5[2:4])
​
#4.2从开头截取到指定位置
print(l5[0:5])
print(l5[:5])
​
#4.3从指定位置截取到结尾
print(l5[3:7])
print(l5[3:])
#注意;如果要取到最后一个元素,可以超过索引的范围,在这种情况下不会报错
print(l5[3:20])

5.列表的功能

语法:列表名.功能名()

#1.添加元素
#1.1  append():在列表元素的末尾追加元素
list11 = [10,20,30]
print(list11)
#追加单个元素
list11.append(40)
print(list11)
#追加多个元素
#list11.append(50,60)   #错误演示
#注意:使用append功能,追加多个元素,不能直接追加,通过列表的形式追加
list11.append([50,60])
print(list11)
​
#1.2   extend():扩展,在列表的末尾添加元素
list12 = [10,20,30]
print(list12)
#追加单个元素
#list12.extend(40)    #错误演示:extend不能直接添加单个元素
# #iterable:可迭代的   iterator
#追加多个元素
#注意:使用extend添加多个元素,仍然采用列表的方式添加,但是,实际上添加的只是元素【打碎添加】
list12.extend([50,60])
print(list12)
​
print("~~~~~~~~")
​
#1.3  insert() ;插入,在指定索引处插入元素
#格式:insert(索引,插入的数据)
list13 = [10,20,30]
print(list13)
list13.insert(2,40)
print(list13)
#注意:插入一个列表,将整个列表插入到原列表中
list13.insert(1,[50,60])
print(list13)
​
#2.删除元素
#2.1   pop(索引) ;弹出,移除列表中指定索引处的元素
list21 = [10,20,30,40,50,60]
print(list21)
#pop默认移除的是最后一个元素,得到的结果为被移除的元素
result1 = list21.pop()
print(list21)
print(result1)
#移除指定位置的元素
list21.pop(2)
print(list21)
​
#2.2  remove(元素) :移除,特点:移除的是列表中的元素【在列表中从0开始能够匹配到的第一个元素】
list22 = [10,20,30,40,50,60]
print(list22)
list22.remove(10)   #等价于list22.pop(0)
print(list22)
​
#需求:移除列表中所有的数字10
list23 = [10,20,30,40,50,60,10,10,10,10,10,10]
"""
list23.remove(10)
print(list23)
list23.remove(10)
print(list23)
list23.remove(10)
print(list23)
"""
num = 0
element = 10
cou = list23.count(element)
while num < cou:
    list23.remove(element)
    print(list23)
    num += 1
print(list23)
​
#2.3 clear():清除,清除列表中的所有元素,原列表变为空列表
list24 = [10,20,30,40,50,60,10,10,10,10,10,10]
list24.clear()
print(list24)
​
#3.获取
#语法:功能名(列表名)
#3.1   len()    length,获取列表的长度【获取列表中元素的个数】
list31 = [10,20,30,40,50,60,10,10,10,10,10,10]
length = len(list31)
​
#3.2   max();获取列表中元素的最大值  min()   最小值
print(max(list31))
print(min(list31))
​
#3.3 index() :索引,从列表中匹配到的第一个元素对应的索引值
inx1 = list31.index(10)
print(inx1)
​
#3.4  count();个数,查找指定元素在列表中出现的次数
c = list31.count(10)
print(c)
​
#4.其他
#4.1 reverse()    反转,将列表中的元素倒序输出
list41 = [10,20,30,40,50,60,10,10,10,10,10,10]
list41.reverse()
print(list41)
​
#4.2 sort()   排序,默认为升序排序,注意:在列表的内部操作
#升序
list41.sort()
print(list41)
#降序
list41.sort(reverse=True)
print(list41)
​
#sorted()  排序,默认为升序排序,注意:生成一个新的列表
list42 = [10,20,30,40,50,60,10,10,10,10,10,10]
#升序
newList1 = sorted(list42)
print(list42)
print(newList1)
#降序
newList2 = sorted(list42,reverse=True)
print(newList2)
​
#按照长度排序
list43 = ["fhjdhf","g","gfg"]
newList3 = sorted(list43,key=len)
print(newList3)
​
#4.3 拷贝【面试题】
#浅拷贝
#深拷贝
#a.从内存的角度
#浅拷贝:引用【栈空间】
list44 = [23,45,98]
list45 = list44
list45[1] = 100
print(list44)
print(list45)
print(id(list44) == id(list45))
​
​
#深拷贝:内存【实体,堆空间】
list51 = [23,45,98]
list52= list51.copy()
list52[1] = 100
print(list51)
print(list52)
print(id(list51) == id(list52))
​
#b.从内容的角度
​

5.二维列表

本质:一维列表,只不过列表中的元素仍然是一个列表

掌握:二维列表的遍历

三、for-in循环

1.用法

语法:

​ for 变量名 in 列表:

​ 循环体

功能:for循环主要用于遍历列表【遍历:指的是依次访问列表中的每一个元素,获取每个元素值】

说明:按照顺序获取列表中的每个元素,会赋值给变量,执行循环体,循环的次数取决于列表的长度

代码演示:

#需求:将列表中的元素全部打印出来
list1 = ["and",567,"abc"]
print(list1[0])
print(list1[1])
print(list1[2])
​
#使用for遍历列表,for循环主要结合成员运算符使用
for element in list1:
    print(element)
​
#用while实现
num = 0
while num < len(list1):
    print(list1[num])
    num += 1
​
#注意:在遍历列表的时候,for循环主要操作的是元素,while循环主要操作的是索引
​
#else分支:for遍历完列表之后,最后才执行else分支
for x in [43,545,4656,5]:
    print(x)
else:
    print("over")

2.列表生成器

random.choice(range(100))

range([start,]end[,step]) 注意:[]表示start和step可写可不写

start:开始数字

end:结束数字

step:步长

注意:start默认为0,step默认为1

功能:生成具有一定规律的列表

代码演示:

#问题:for x in 列表,直接操作的是元素,for循环能不能操作列表中的索引?----》列表生成器【生成一个和索引有关的列表】
list1 = [43,65,6,576,7]
#操作元素
for x in list1:
    print(x)
​
#操作索引
"""
range([start,]end[,step])
例如:
range(100):生成一个0~99的整数列表【不包含100】
range(1,100):生成一个1~99的整数列表
range(1,100,2):在1~99的范围内,生成一个奇数列表
"""
indexList = range(0,len(list1))
for i in indexList:
    print(i)
    print(list1[i])

练习:

#1.计算1~100之间所有整数的和
sum1 = 0
for x in range(1,101):
    sum1 += x
print(sum1)
​
​
#2.计算1~100之间所有偶数的和
#方式一
sum1 = 0
for x in range(0,101,2):
    sum1 += x
​
#方式二
sum1 = 0
for x in range(1,101):
    if x % 2 == 0:
        sum1 += x

3.遍历列表

代码演示:

list1 = [54,5,465,5]
​
#1.直接操作的是元素
for element in list1:
    print(element)
​
#2.操作索引
for i in range(len(list1)):
    print(i,list1[i])
​
#3.同时遍历索引和元素
#enumerate;枚举【类似于一个容器】
for i,element in enumerate(list1):
    print(i,element)

4.嵌套for循环

代码演示:

#二维列表的遍历
list2 = [[23,54,64,6],[54,4,65],[54,65,657]]
subList = list2[1]
print(subList)
print(subList[1])
print(list2[1][1])
​
#嵌套for循环
for  subList in list2:
    for element in subList:
        print(element)
​
#打印九九乘法表
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%dx%d=%d"%(j,i,i*j),end=" ")
        j += 1
    print("")
    i += 1
​
#外层循环:控制行
for i in range(1,10):
    #内层循环:控制列
    for j in range(1,i + 1):
        print("%dx%d=%d" % (j, i, i * j), end=" ")
    print("")

猜你喜欢

转载自blog.csdn.net/printZLO/article/details/81261252