AI课程笔记Python基础(分支+循环+函数)
文章目录
1列表推导式
1.1利用for循环对列表进行遍历
#创建一个列表,其中装载0~99共100个数字
list_number = [i for i in range(100)]
print(list_number)
#输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
1.2加入if语句对将要插入列表(字符串)的值进行条件判断
#创建一个列表,其中包含1~100中能被2整除的数
list_number2 = [i for i in range(100) if i % 2 == 0]
print(list_number2)
#输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
#创建一个字符串列表,将长度>3的字符串大写输出
names = ["tom","jerry","cindy","black"]
new_names = [name.upper() for name in names if len(name) > 3]
print(new_names)
#输出:['JERRY', 'CINDY', 'BLACK']
2分支与循环(if-elif-else&while&for)
2.1if-elif-else
#传统if-elif-else分支结构
price = 21
if price <= 18:
print("Beautiful Price!I'll buy it!")
elif price <= 25:
print("I shall accept it!")
else:
print("Too expensive!")
#输出:I shall accept it!
#简便写法(80 <= Mark <= 100也可以写成80 <= Mark & Mark <= 100)
Mark = 95
Assess = "Great" if 80 <= Mark <= 100 else "Soso"
print(Assess)
#输出:Great
2.2while循环
#while循环实例(后面还可以搭配else)
while i < 5:
print(i,end = " ")
i += 1
else:
print("i>5")
#输出:0 1 2 3 4 i>5
2.3for循环
2.3.1可迭代对象(都可以用for循环)
string(字符串)、list(列表)、tuple(元组)、dictionary(字典)、set(集合)、generator(生成器)、iterator(迭代器)
2.3.2实例1:str的遍历
#字符串的遍历
str1 = "wow"
for letter in str1:
print(letter,end = " ")
#输出:w o w
2.3.3实例2:list的遍历
#list遍历
list1 = [1,2,"hi"]
for element in list1:
print(element,end = " ")
#输出:1 2 hi
2.3.4实例3:dict的遍历(items()函数是获取字典中的每一个键值对)
#dict遍历(利用items()函数取出key和value)
dict1 = {"Tom":"Cat","Jerry":"Mouse"}
for k,v in dict1.items():
print(k,":",v,end = " ; ")
#输出:Tom : Cat ; Jerry : Mouse
2.3.5实例4:取出可迭代量的位置和值(enumerate()函数将其转化成一个索引序列)
#利用enumerate()函数取出可迭代量的位置与值
list2 = [1,2,"yes","no"]
for index,value in enumerate list2:
print(index,value)
#输出:
#0 1
#1 2
#2 yes
#3 no
2.3.6实例5:range()函数实现已知次数的for循环
#利用range()实现已知次数的for循环
for i in range(10):
print(i,end = " ")
#输出:0 1 2 3 4 5 6 7 8 9
2.3.7实例6:zip()函数实现同时对两个或多个序列的遍历
#zip()函数实现两个列表的遍历
attribute = ["name","age","height"]
my_stat = ["Howard","20","230"]
for attr,stat in zip(attribute,my_stat):
print(attr,"->",stat)
#输出:
#name -> Howard
#age -> 20
#height -> 230
2.3.8实例7:reversed()函数实现for循环的反向遍历(输出)
list_eg = [1,3,"hey"]
for element in reversed(list_eg):
print(element,end = " ")
#输出:hey 3 1
for i in reversed(range(5)):
print(i,end = " ")
#输出:4 3 2 1 0
*2.3.9实例8:利用sorted()函数和set集合实现混乱排序数列的去重+重排列
#实现下列数据的降重,从大到小排序
list_mess = [1,5,4,3,6,4,4,2,7,8,7,9] #原始混乱的数据
list_clear = [] #用于接收结果的列表
set_mess = set(list_mess) #利用集合实现降重操作
for i in sorted(set_mess,reverse = True):
list_clear.append(i)
print(list_clear)
#输出:[9, 8, 7, 6, 5, 4, 3, 2, 1]
3pass语句(相当于占位符,可以写在任何地方)
3.1pass使用实例
#利用pass语句跳过自己还没有想好的部分,实现不同部分的独立性
for i in reversed(range(8)):
pass
if(3 > 2):
print("Correct!")
#输出:Correct!
4.生成器(Generator)&迭代器(iterator)
4.1迭代器的基本知识
①迭代器为1个可以记住遍历位置的对象
②迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束。只往前,不后退
③str、list、tuple都可以创建迭代器
4.2实例1 用iter()函数创建1个迭代器+利用next()函数通过迭代器进行遍历
#利用iter()函数创建一个迭代器
list_it = [1,2,3,5,3]
it = iter(list_it) #将list转化成迭代器类型
print(type(it)) #输出:<class 'list_iterator'>
#对list进行常规遍历
for i in range(5):
print(list_it[i],end = " ") #输出:1 2 3 5 3
#利用next()进行迭代器遍历
print(next(it))
print(next(it))
#输出:
#1
#2
4.3直观理解迭代器的应有场所
手机里有n张图片,需要不断按下一张进行查看,因此需要有iterator记录当前图片的位置(序号)以实现迭代查看
4.4生成器(含有yield()函数的函数)
#创建一个生成器(含有yield()的函数)
def print_all(list1)
for element in list1:
yield(element)
list_gen = [1,4,5,8,2]
#直接输出该函数,并用next函数迭代访问
print()
it = iter(print_all(list_gen))
5.函数
5.1函数参数
5.1.1参数的种类
必需(位置)参数、关键字参数、默认参数、不定长参数
5.1.2参数实际应用(必需参数+关键字参数+默认参数+*不定长参数)
#必需参数(一定要按照定义的顺序和数目进行传入)
def printstr(a,b):
return a,b
printstr(3,5)
#返回:3,5
#关键字参数(以名称为索引传入参数,可以不按顺序)
def printstr(a,b):
return a,b
printstr(b = 3, a = 5)
#返回:5,3
#默认参数(定义时就给变量一个默认值)
def printstr(a = 99,b = 3)
return a,b
printstr() #返回:99,3
printstr(66,4) #返回:66,4
#*不定长参数(长度不一定,可以根据输入判断参数的个数)
def printstr1(a,*vartuple): #1个*号:不定常参数以元组的形式进行存储
print(a,end = " ")
print(type(vartuple)) #输出:<class 'tuple'>
for var in vartuple:
print(var,end = " ")
return 0
printstr(10) #输出:10
printstr(10,5,7,3) #输出:10 5 7 3
def printstr2(a,**vardict): #2个*号:不定常参数以字典的形式进行存储
print(a)
for k,v in vardict.items():
print(k,v)
return 0
printstr2(3,a0 = "hello",b0 = "bye") #需要以键值对的形式传入
#输出:
#3
#a0 hello
#b0 bye
#如果同时使用,元组形式一定要在字典之前
5.2lambda函数
x = lambda a : a + 10 #冒号‘:’前的为传入参数,后面为对参数的操作
print(x(5)) #输出:15