'''递归函数''' # n!=1*2*3*4*...*n def factorail(n): s = 1 for i in range(1,n+1): s *= i return s print(factorail(5)) ''' n! = (n-1)!*n (n-1)! = (n-2)!*(n-2) 2! = (2-1)!*2 1! = 1 ''' # 递归函数 def fact(n): if n == 1: # 递归函数一定要有边界条件 return 1 return fact(n-1)*n # 递归函数中一定要有对函数自己的调用 print(fact(5)) '''切片''' names = ['赵梦冰','张荣亮','张国荣','焦新瑞','代金鑫'] ''' names[a:b:c]:表示截取从下标a开始到下标b结束的所有元素,但不包含b c表示步长,默认值是1 列表切片后还是列表 元组也可以切片后还是切片 字符串切片后还是字符串 ''' print(names[0:3]) # 如果第一个索引是0,可以省略不写 print(names[:3]) # 如果一直截取到末尾,第二个索引可以省略不写 print(names[3:]) # 复制列表 l = names[:] print(l) # 切片时可以指定步长,默认值是1 print(names[::2]) # 元组切片后还是切片 name = ('赵梦冰','张荣亮','张国荣','焦新瑞','代金鑫') print(name[0:3]) # 字符串切片后还是字符串 s = 'abcdef' print(s[:]) '''迭代''' names = ['赵梦冰','张荣亮','张国荣','焦新瑞','代金鑫'] # 循环,遍历,迭代 Iteration # names:可迭代对象 列表,元组,字典,字符串 for name in names: print(name) # 遍历key name_scores = {'赵梦冰':88,'张荣亮':99,'侯富军':77,'王颜丽':89,'焦新瑞':93,'张国荣':98} for key in name_scores: print(key,name_scores[key]) # 遍历value for value in name_scores.values(): print(value) # 同时遍历key和value for key,value in name_scores.items(): print(key,value) # 遍历字符串 for char in 'abcdef': print(char) '''判断对象是否可迭代''' from collections.abc import Iterable # isinstance(obj,type)判断对象obj是否是type类型,是则返回True,否则返回False print(isinstance(1,int)) print(isinstance('1',str)) print(isinstance('1',int)) print(isinstance(names,Iterable)) # 循环遍历 for i,char in enumerate('abcdef'): print(i,char) ''' 列表生成式 ''' nums = list(range(10)) print(nums) # [1*1,2*2,3*3,...9*9] # 方法一 nums = [] for x in range(1,10): nums.append(x*x) print(nums) # 方法二 列表生成式 # ☆☆☆ m = [x*x for x in range(1,10)] print(m) # 用列表生成:[1,1/2,1/3, n = [1/x for x in range(1,10)] print(n) # 列表生成式中添加条件判断 o = [x*x for x in range(1,10) if x%2==0] print(o) # 列表生成式中使用多重循环 p = [x+y for x in 'ABC' for y in 'XYZ'] print(p) # 用列表生成式生成元组 q = tuple([x*x for x in range(1,10)]) print(q)
|