PYTHON-匿名函数,递归与二分法,面向过程编程-练习
# 四 声明式编程练习题 # 1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写
names = ['egon', 'alex_sb', 'wupeiqi', 'yuanhao']
# # 方式一:手动实现
# new_names=[]
# for line in names:
# new_names.append(line.swapcase())
# print(new_names)
#
# # 方式二:列表生成式
# new_names=[line.swapcase() for line in names]
# print(new_names)
#
# # 方式三:map+匿名函数
# res=map(lambda line :line.swapcase() ,names)
# print(list(res)) # names=[name.upper() for name in names]
# print(names) # 2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度
names = ['egon', 'alex_sb', 'wupeiqi', 'yuanhao'] # new_names=[]
# for line in names:
# if not line.endswith('sb'):
# new_names.append(line)
# print(new_names) # new_names=[len(line) for line in names if not line.endswith('sb') ]
# print(new_names) # res=filter(lambda line:not line.endswith('sb'),names)
# print(list(res)) # 3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)
# file=[]
# with open('a.txt','rt',encoding='utf-8')as f:
# for line in f:
# res=f.read()
# # print(res)
# res=res.split('\n')
# file.append(res)
# print(file)
# def funcs(x):
# return len(x)
# res=max(file,key=funcs)
# print(res)
# res2=max(res,key=funcs)
# print(len(res2)) # print(max(len(line) for line in f)) # 4、求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)
# with open('a.txt','rt',encoding='utf-8')as f:
# print(sum(len(line) for line in f))
# print(sum(len(line) for line in f)) # 求包换换行符在内的文件所有的字符数,为何得到的值为0? # 5、思考题
# with open('a.txt') as f:
# g=(len(line) for line in f)
# print(sum(g)) #为何报错? # with open('a.txt') as f:
# print(sum(len(line) for line in f))
# print(sum(g)) #为何报错?(len(line) for line in f)时循环多个值
#
# 6、文件shopping.txt内容如下
# mac,20000,3
# lenovo,3000,10
# tesla,1000000,10
# chicken,200,1
# 求总共花了多少钱?
# 打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]
# 求单价大于10000的商品信息,格式同上 # with open('shopping.txt','rt',encoding='utf-8') as f:
# info=[line.strip('\n').split(',') for line in f]
# print(info)
# cost=sum(float(unit_price) *int(count) for _,unit_price,count in info)
# print(cost) # with open('shopping.txt', 'rt', encoding='utf-8') as f:
# # for line in f:
# # print(line)
# info=[{'name':line.strip('\n').split(',')[0],
# 'price':int(line.strip('\n').split(',')[1]),
# 'count':int(line.strip('\n').split(',')[2])} for line in f]
# print(info) # with open('shopping.txt',encoding='utf-8') as f:
# info = [{'name': line.strip('\n').split(',')[0],
# 'price': int(line.strip('\n').split(',')[1]),
# 'count': int(line.strip('\n').split(',')[2])} for line in f if int(line.strip('\n').split(',')[1]) > 10000]
# print(info) # ====================
# 函数递归
# 四 二分法
#
# 想从一个按照从小到大排列的数字列表中找到指定的数字,
# 遍历的效率太低,用二分法(算法的一种,算法是解决问题的方法)可以极大低缩小问题规模
# 实现类似于in的效果
# l = [1, 2, 10, 30, 33, 99, 101, 200, 301, 311, 402, 403, 500, 900, 1000] # 从小到大排列的数字列表
# # find_index = 900
# def search(find_index, l):
# print(l)
# if len(l)==0:
# print('not find!')
# return
# mid_num = len(l) // 2
# mid_index = l[mid_num]
# # print(mid_index)
# if find_index > mid_index:
# print('right')
# l = l[mid_num + 1:]
# search(find_index, l)
# elif find_index < mid_index:
# print('left')
# l = l[0:mid_num]
# search(find_index, l)
# else:
# print('find it!')
#
# search(901, l) # 实现类似于l.index(30)的效果
# 查找一个值是否存在于列表中并返回索引
# l = [1, 2, 10, 30, 33, 99, 101, 200, 301, 311, 402, 403, 500, 900, 1000] # 从小到大排列的数字列表
# def search(num,l,start=0,stop=len(l)-1):
# if start <= stop:
# mid=start+(stop-start)//2
# print('start:[%s] stop:[%s] mid:[%s] mid_val:[%s]' %(start,stop,mid,l[mid]))
# if num > l[mid]:
# start=mid+1
# elif num < l[mid]:
# stop=mid-1
# else:
# print('find it',mid)
# return
# search(num,l,start,stop)
# else: #如果stop > start则意味着列表实际上已经全部切完,即切为空
# print('not exists')
# return
#
# search(301,l)
PYTHON-匿名函数,递归与二分法,面向过程编程-练习的更多相关文章
- python函数:匿名函数、函数递归与二分法、面向过程编程
今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...
- JS匿名函数递归实现阶乘
var rs = (function (value) { if (value > 1) return value * arguments.callee(value - 1); return va ...
- python 匿名函数的使用(并没有那么简单)
以下为几种匿名函数的使用方式:x=[(lambda x:x**2)(x) for x in range(10)]print(x)y=[x**2 for x in range(10)]print(y)i ...
- Python匿名函数_return语句
Python匿名函数: 使用 lambda 关键字创建匿名函数: lambda 定义的函数只是一个表达式,而不是代码块 lambda 函数拥有自己的命名空间,不能够访问参数列表之外的 或 全局命名空间 ...
- Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n ...
- python匿名函数(lambda)
简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方 ...
- python匿名函数
文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...
- python 匿名函数与三元运算
匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda x ...
- python 匿名函数&内置函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...
- python匿名函数 高阶函数 内置函数 文件操作
1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...
随机推荐
- 初识Quartz之第一个Quartz实例
转: 初识Quartz之第一个Quartz实例 2018年04月09日 17:07:31 carson0408 阅读数:366 版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...
- 中南大学2018年ACM暑期集训前期训练题集(入门题) J : A Simple Problem
毒瘤哇!为什么要用long long 啊!!!这个题没有加法操作啊,为什么会爆int啊!!!! 思路: http://www.cnblogs.com/buerdepepeqi/p/9048130.ht ...
- Cotex-M4简介
ARM Cortex™-M4 处理器是由 ARM 专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场. 高效的信号处理功能与 Cortex-M 处理器系列 ...
- java常见面试题及三大框架面试
Java基础方面: 1.作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ ...
- mac 上sublime3安装编码插件
我们常常会遇到这样的问题:我们使用 mac 的时候,从 windows 上接受过来的文档通过 sublime3打开之后就是乱码,这个时候需要安装相对应的编码插件才能正常查看. 1. 打开 sublim ...
- 20181114 Redis
Redis 下载 Windows版本 Windows版本 已经有很久没有更新了,建议还是使用Linux版本 Linux版本 官网下载即可 配置文件 Windows版本 redis.windows.co ...
- Windows计划任务提示 0xE0434352 错误
写了一个计划任务每周去跑一个程序,但是并没有跑,报错是 0xE0434352,应该是没有找到路径(计划任务这么菜的吗)... 解决办法:双击启动程序 写上你当前程序的起始路径 然后在运行一下,就成功了
- Object.keys()返回对象的属性
<script> // 传入对象,返回属性名 let obj = { 'a': '123', 'b': '456' } console.log(Object.keys(obj)) //[& ...
- idea 插件的使用 进阶篇(个人收集使用中的)
idea 插件的使用 进阶篇(个人收集使用中的) 恭喜你,如果你已经看到这篇文章,证明在idear使用上已经初有小成!那么就要向着大神进发了! 下边就是大神之路! 插件的设置 在 IntelliJ I ...
- 从面向对象的角度重新认识JS世界
一. 背景 距离上一篇JS文章已经20天,经重新总结发现,上一篇概况的有点浅显,适合初学js的入门了解,但对于已经学习js一段时间的人,或者是想系统的了解JS体系,接下来的文章可能会更有帮助. 该系 ...