【Finish】Python Day 17
迭代器
# 生成器进阶
# 内置函数
# 55个
# 带key的 max min filter map sorted zip
# 匿名函数
# lambda 参数,参数2:
# # 用map来处理字符串列表,把列表中的所有人变成sb,比方说alex_sb
# name = ['alex','wupeiqi','yuanhao','nezha']
# def func(params):
# return params+'_sb'
# test = map(func,name) # 迭代器取值结束之后,就空了,再去print打印在空
# for j in test:
# print(j)
#
# # 换个方式
# test = map((lambda s:s+'_sb'),name)
# print(list(test))
# # 用filter函数处理数字列表,将列表中的所有的偶数筛选出来
# integer = [1,22,56,88,99]
# test= filter(lambda x:x%2==0,integer) # 返回值是一个迭代器
# test= filter(lambda x:True if x%2 == 0 else False,integer) # lambda可以使用表达式,返回值是一个迭代器
# print(list(test))
# # 随意写一个20行以上的文件
# # 运行程序,先将内容读入到内存中,用列表存储
# # 接受用户输入页码,每页5条,仅输出当页的内容
# def readfile(filename):
# with open(filename,encoding='UTF-8') as f:
# test = []
# for i in f.readlines():
# test.append(i.strip())
# return test
#
# def readfile_by_page(filename,page):
# filelist = readfile(filename) # 读取文件内容
# pages,mod= divmod(len(filelist),5) # 求商取余
# if mod!=0:
# pages += 1
# print('the total pages is :'+str(pages))
#
# if pages<=page:
# return filelist[(pages-1)*5:]
#
# elif pages>page:
# return filelist[(page-1)*5:page*5]
#
# print(readfile_by_page('file',4))
# # 如图,每个小字典name对应股票的名字,shares对应多少股,price对应股票的价格
# portfolio = [
# {'name':'IBM','shares':100,'price':91.1},
# {'name': 'AAPL', 'shares': 50, 'price': 543.22},
# {'name': 'FB', 'shares': 200, 'price': 21.09},
# {'name': 'HPQ', 'shares': 35, 'price': 31.75},
# {'name': 'YHOO', 'shares': 45, 'price': 16.35},
# {'name': 'ACME', 'shares': 75, 'price': 115.65},
# ]
# # 计算购买每只股票的总价
# def func(test):
# return test['shares']*test['price']
# print(list(map(func,portfolio)))
# print(list(map(lambda x:{x['name']:x['price']*x['shares']},portfolio)))
#
# # 用filter过滤出,单价大于100的股票有哪些
# print(list(filter((lambda x:x['price']>100),portfolio)))
# # 递归函数
# 了解什么是递归:
# 在函数中调用自身函数;
# 最大递归深度默认是997/998——是python从内存角度出发做的限制
# 设置递归深度:sys.setrecursionlimit(100)
# 能看懂递归
# 能知道递归的应用场景
# 初识递归
# 算法——二分法
# 三级菜单——递归实现
# def story():
# print('从前有座山')
# story()
# print('山里有座庙')
# story()
# RecursionError: maximum recursion depth exceeded while calling a Python object
# 超过了递归的最大深度
# import sys
# sys.setrecursionlimit(100) # 可设置递归深度
# n = 0
# def story():
# global n
# n+=1
# print('从前有座山')
# print(n)
# story()
# print('山里有座庙')
# story() # 997
# 如果递归次数太多,就不适合使用递归函数来解决问题
# 递归的缺点:占内存
# 递归的优点:会让代码变简单
#
# n = 4 age(4)=40
# n<4 age(4) = age(n-1)+2
# def age(n):
# if n == 4:
# return 40
# elif n<4 and n>0:
# return age(n+1)+2
# print(age(1))
#
# def age(1):
# if 1 == 4:
# return 40
# elif 1<4 and 1>0:
# return age(2)+2#返回46
#
# def age(2):
# if 2 == 4:
# return 40
# elif 2<4 and 2>0:
# return age(3)+2 #返回44
#
# def age(3):
# if 3 == 4:
# return 40
# elif 3<4 and 3>0:
# return age(4)+2 #返回42
#
# def age(4):
# if 4 == 4:
# return 40 #返回40
# elif 3<4 and 3>0:
# return age(4)+2
# 算法
# 我们学习的算法 都是过去时
# 了解基础的算法才能创造出更好的算法
# 不是所有的事情都能套用现成的方法解决
# 有些时候会用到学过的算法只是来解决新问题
# # 二分查找算法
# l = [2,3,5,10,15,16,18,26,30,32,35,41,42,43,44,45,46,55,56,66,67,69,72,76,82,83,88]
# # 二分法查找算法,必须处理有序的列表
# def find(l,aim,start = 0,end = None):
# end = len(l) if end is None else end
# mid_index = (end - start) // 2 + start
#
# if start<=end: #判断是否可以找到
# if l[mid_index]<aim:
# return find(l,aim,start = mid_index+1,end = end )
# elif l[mid_index]>aim:
# return find(l,aim,start = start,end = mid_index-1 )
# else:
# return mid_index
# else:
# return 'can not find it '
#
# print(find(l,66))
posted on 2018-08-26 16:28 wonderful0714 阅读(189) 评论(0) 编辑 收藏 举报