文章目录
-
-
- AI课程笔记Python基础(分支+循环+函数)
-
- 1列表推导式
-
- 1.1利用for循环对列表进行遍历
- 1.2加入if语句对将要插入列表(字符串)的值进行条件判断
- 2分支与循环(if-elif-else&while&for)
-
- 2.1if-elif-else
- 2.2while循环
- 2.3for循环
-
- 2.3.1可迭代对象(都可以用for循环)
- 2.3.2实例1:str的遍历
- 2.3.3实例2:list的遍历
- 2.3.4实例3:dict的遍历(items()函数是获取字典中的每一个键值对)
- 2.3.5实例4:取出可迭代量的位置和值(enumerate()函数将其转化成一个索引序列)
- 2.3.6实例5:range()函数实现已知次数的for循环
- 2.3.7实例6:zip()函数实现同时对两个或多个序列的遍历
- *2.3.9实例8:利用sorted()函数和set集合实现混乱排序数列的去重+重排列
- 3pass语句(相当于占位符,可以写在任何地方)
-
- 3.1pass使用实例
- 4.生成器(Generator)&迭代器(iterator)
-
- 4.1迭代器的基本知识
- 4.2实例1 用iter()函数创建1个迭代器+利用next()函数通过迭代器进行遍历
- 4.3直观理解迭代器的应有场所
- 4.4生成器(含有yield()函数的函数)
- 5.函数
-
- 5.1函数参数
-
- 5.1.1参数的种类
- 5.1.2参数实际应用(必需参数+关键字参数+默认参数+*不定长参数)
- 5.2lambda函数
-
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)) #输出:#对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)) #输出: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