'''递归函数'''
# 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-1) ... 2! = (2-1)!*2 1! = 1 ''' # 递归函数 def fact(n): if n == 1: #2.递归函数中一定要有边界条件 return 1 return fact(n-1)*n # 1.递归函数中一定要有对函数自己的调用
print(fact(1000))
''' fact(5) fact(4)*5 fact(3)*4*5 fact(2)*3*4*5 fact(1)*2*3*4*5 1*2*3*4*5
''' '''切片'''
names = ['赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞','张国荣','吕煜海
''' names[a:b:c]表示截取从下标a开始到下标b结束的所有元素,但是包含a,不包含b c表示步长,默认值是1 列表切片后还是列表 元组切片后还是元组 字符串切片后还是字符串 ''' print(names[0:3]) print(names[2:3]) # 切片支持负数索引 print(names[-7:-4])
# 如果第一个索引是0,可以省略 print(names[:3]) # 如果一直截取到末尾,可以省略第二个索引 print(names[3:]) # 复制列表 l = names[:] m = names print('---------------------------------') m.append('白李娜') print(names) print(l) print(m)
# 切片时还可以指定步长,步长值默认是1 print(names[0::2]) print(names[0::3])
# 元组也可以切片,结果还是元组 names = ('赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞','张国荣','吕煜海')
# 字符串也可以切片,结果还是字符串 s = 'abcdef' '''迭代'''
names = ['赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞','张国荣','吕煜海
# 循环,遍历,迭代Iteration # names: 可迭代对象 # 可迭代对象: 列表,元组,字典,字符串 for name in names: print(name)
print('-----------------------------')
# 遍历key name_scores = {'赵梦冰':88,'张荣亮':99,'侯富君':77,'王颜丽':89,'焦新瑞':93,'张国荣':98,'吕煜海':85} for key in name_scores: print(key,name_scores[key])
print('-----------------------------') # 遍历value for value in name_scores.values(): print(value)
# 同时遍历key和value for key,value in name_scores.items(): print(key,value)
print('-----------------------------') # 遍历字符串 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',int)) print(isinstance('1',str))
print(isinstance(names,Iterable))
i = 0 # 循环控制变量 for char in 'abcdef': print(i,char) i = i + 1
print('-----------------------------') # 简化方式提供循环遍历 for i,char in enumerate('abcdef'): print(i,char)
# for(int i=0;i<100;i++){
# } ''' 列表生成式 字典生成式 '''
nums = [0,1,2,3,4,5,6,7,8,9] nums = list(range(6,10)) print(nums)
# [1*1,2*2,3*3,....,9*9] # 方法一: nums = [1*1,2*2,3*3]
# 方法二: 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,...1/10] 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) |