python--内置函数、匿名函数、递归调用
匿名函数
有名函数:
def func1(x):
return x**
print(func1)
结果:
<function func1 at 0x00000000005C3E18>
匿名函数:
func2=lambda x: x**
print(func2)
结果:
f1=lambda x,y:x+y
print(f1(,))
结果:
f2=lambda x:x>
print(f2())
结果:
True
salaries={
'egon':,
'alex':,
'wupeiqi':,
'yuanhao':
} print(max(salaries,key=lambda x:salaries[x]))
结果:
alex
内置函数
字典的运算:最小值min,最大值max,排序sorted
迭代字典,取得是key,因而比较的是key的最大和最小值
可以取values,来比较
>>> max(salaries.values())
>>> min(salaries.values())
但通常我们都是想取出,工资最高的那个人名,即比较的是salaries的值,得到的是键
>>> max(salaries,key=lambda k:salary[k])
'alex'
>>> min(salaries,key=lambda k:salary[k])
'yuanhao'
也可以通过zip的方式实现
salaries_and_names=zip(salaries.values(),salaries.keys())
先比较值,值相同则比较键
>>> max(salaries_and_names)
(100000000, 'alex')
salaries_and_names是迭代器,因而只能访问一次
>>> min(salaries_and_names)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence
salaries={
'egon':,
'alex':,
'wupeiqi':,
'yuanhao':
} print(max(salaries)) #迭代字典,取得是key,因而比较的是key的最大和最小值
print(max(salaries.values()))
结果:
yuanhao
salaries={
'egon':,
'alex':,
'wupeiqi':,
'yuanhao':
} res=zip(salaries.values(),salaries.keys())
for i in res:
print(i)
结果:
(, 'egon')
(, 'alex')
(, 'wupeiqi')
(, 'yuanhao')
salaries={
'egon':,
'alex':,
'wupeiqi':,
'yuanhao':
}
res=zip(salaries.values(),salaries.keys())
print(max(res)[-])
结果:
alex
print(max([,,,,]))
print(
max(
i for i in range()
)
)
结果:
# min函数
# map:映射
l=[,,,]
m=map(lambda x:x**,l)
print(list(m))
结果:
[, , , ]
names=['alex','wupeiqi','yuanhao']
print(list(map(lambda item:item+'_SB',names)))
结果:
['alex_SB', 'wupeiqi_SB', 'yuanhao_SB']
#reduce:合并
from functools import reduce res=
for i in range():
res+=i
print(res) print(reduce(lambda x,y:x+y,range(),))
结果:
# filter:过滤
names=['alex_sb','yuanhao_sb','wupeiqi_sb','egon']
print(list(filter(lambda name:name.endswith('_sb'),names)))
结果:
['alex_sb', 'yuanhao_sb', 'wupeiqi_sb']
#divmod函数 (求商和余数)
print(divmod(,)) total_count=
per_count= res=divmod(total_count,per_count)
if res[] > :
page_count=res[]+ print(page_count)
结果:
(, )
#enumerate函数
l=['a','b','c'] for i in enumerate(l):
print(i) dic={'name':'egon','age':}
for i in enumerate(dic):
print(i)
结果:
(, 'a')
(, 'b')
(, 'c')
(, 'name')
(, 'age')
s=set({,,})
s.add() s.pop()
print(s)
结果:
{, , }
s=frozenset({1,2,3})
print(globals() is locals())
结果:
True
s1='hello123123'
s2=' hello123123' print(hash(s1))
print(hash(s2))
结果:
-
-
print(type())
print(isinstance(,int))
结果:
<class 'int'>
True
# iter([1,2,3]) #[1,2,3].__iter__()
print(pow(,,)) #**%
结果:
for i in range(-,):
print(i)
结果:
-
-
-
-
-
for i in range(,,): #
print(i)
结果:
for i in range(,,-): #
print(i)
结果:
l=['a1','a2','a3','a4','a5','a6','a7','a8','a9']
print(l[::])
print(l[::])
print(l[::-])
结果:
['a3', 'a5']
['a1', 'a3', 'a5', 'a7', 'a9']
['a9', 'a8', 'a7', 'a6', 'a5', 'a4', 'a3', 'a2', 'a1']
l1=[,,,]
print(list(reversed(l1)))
print(l1)
l1=list(reversed(l1))
结果:
[, , , ]
[, , , ]
print(round(3.3456,))
结果:
3.346
l=['a1','a2','a3','a4','a5','a6','a7','a8','a9']
print(l[::]) x=slice(,,)
print(l[x]) l1=[,,,,]
print(l1[x])
结果:
['a3', 'a5']
['a3', 'a5']
[, ]
print(sum(i for i in range()))
print(sum([,,,]))
结果:
#sorted
sorted(iterable,key=None,reverse=False)
l=[,,,,-]
print(sorted(l)) #从小到大
print(sorted(l,reverse=True)) #从大到小
结果:
[-, , , , ]
[, , , , -]
# vars()
name='alex'
res='SB' if name == 'alex' else 'shuai'
print(res) egg_list=['鸡蛋%s' %i for i in range()] #列表解析
print(egg_list) egg_g=('鸡蛋%s' %i for i in range()) #生成器表达式
print(egg_g) s='hello'
print([True for i in s if i == 'e'])
结果:
shuai
['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5', '鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']
<generator object <genexpr> at 0x0000000002194990>
[True]
递归
'''
递归调用:
在调用一个函数的过程中,直接或者间接调用了该函数本身
'''
直接调用:
def func():
print('====>func')
func() func()
间接调用:
def foo():
print('from foo')
bar() def bar():
print('from bar')
foo() foo()
来个栗子:
def age(n):
if n == :
return
return age(n+)+ print(age())
结果:
一个列表嵌套很多层,用递归取出所有的值
l=[,[,,[,,[,,[,,[,,[,]]]]]]]
def func(l):
for i in l:
if isinstance(i,list):
func(i)
else:
print(i) func(l)
结果:
补充内容
求商品总价:
文件内容:
apple
tesla
mac
lenovo
chicken
low版:
moneys=[]
with open('goods',encoding='utf-8') as f:
for line in f:
l=line.split()
price=float(l[])
count=int(l[])
moneys.append(price * count) # print(moneys)
print(sum(moneys))
结果:
196060.0
列表解析:
with open('goods',encoding='utf-8') as f:
l=[float(line.split()[]) * int(line.split()[]) for line in f]
print(sum(l))
结果:
196060.0
生成器表达式:
with open('goods',encoding='utf-8') as f:
print(sum(float(line.split()[]) * int(line.split()[]) for line in f))
结果:
196060.0
模拟数据库查询
low版:
goods_info=[] with open('goods',encoding='utf-8') as f:
for line in f:
l=line.split()
name=l[]
price=l[]
count=l[]
goods_info.append({'name':name,'price':price,'count':count}) print(goods_info)
结果:
[{'name': 'apple', 'price': '', 'count': ''}, {'name': 'tesla', 'price': '', 'count': ''}, {'name': 'mac', 'price': '', 'count': ''}, {'name': 'lenovo', 'price': '', 'count': ''}, {'name': 'chicken', 'price': '', 'count': ''}]
列出价格大于3000的商品信息:
with open('goods',encoding='utf-8') as f:
goods_info=[{'name':line.split()[],'price':float(line.split()[]),'count':int(line.split()[])} for line in f \
if float(line.split()[]) > ]
print(goods_info)
结果:
[{'name': 'tesla', 'price': 100000.0, 'count': }, {'name': 'lenovo', 'price': 30000.0, 'count': }]
python--内置函数、匿名函数、递归调用的更多相关文章
- python 练习题:请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串
# -*- coding: utf-8 -*- # 请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串 n1 = 255 n2 = 1000 print(hex(n1)) pr ...
- Python内置高阶函数map()
map()函数map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于lis ...
- 匿名函数python内置高阶函数以及递归
匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...
- python学习日记(内置、匿名函数练习题)
用map来处理字符串列表 用map来处理字符串列表,把列表中所有水果都变成juice,比方apple_juice fruits=['apple','orange','mango','watermelo ...
- Python内置函数二 (递归函数,匿名函数,二分法)
匿名函数 lambda() 语法: lambad 参数 : 返回值 def func(a,b): return a * b print(func(2,5)) a = lambda a ,b : a* ...
- Python - 内置函数 选例
概览参见 https://www.runoob.com/python/python-built-in-functions.html 官方文档 https://docs.python.org/3/li ...
- 熟记这些python内置函数,你离大佬就不远了
python内置了很多函数,方便我们在写程序的时候调用,在ython 2.7 的所有内置函数共有80个.熟练记住和使用这些内置函数,将大大提高写Python代码的速度和代码的优雅程度. 以下代码示例用 ...
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)
原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...
- python笔记4 内置函数,匿名函数.递归函数 面向对象(基础, 组合,继承)
内置函数 eval和exec eval :执行字符串中的代码并将结果返回给执行者,有返回值 exec:执行字符串中的代码,往往用于执行流程语句,没有返回值. s1 = '1+2' s2 = 'prin ...
随机推荐
- Junit单元测试之MockMvc
在测试restful风格的接口时,springmvc为我们提供了MockMVC架构,使用起来也很方便. 下面写个笔记,便于以后使用时参考备用. 一 场景 1 . 提供一个restful风格的接口 im ...
- springboot实战(汪云飞)学习-1-2
java EE开发的颠覆者 spring boot 实战 随书学习-1 接上一篇,Java配置的学习(还是上一篇的项目中,添加新的包和代码): java配置是spring4.x推荐的配置方式,可以完全 ...
- 【Linux】shell脚本参数传递
这里介绍参数传递的两种方式. 方式一:$0,$1,$2... 采用$0,$1,$2..等方式获取脚本命令行传入的参数 $0:脚本名称 $1....: 参数 例子: #编写一个shell $ vim t ...
- LOJ 2541 「PKUWC2018」猎人杀——思路+概率+容斥+分治
题目:https://loj.ac/problem/2541 看了题解才会……有三点很巧妙. 1.分母如果变动,就很不好.所以考虑把操作改成 “已经选过的人仍然按 \( w_i \) 的概率被选,但是 ...
- Jdk1.8 之 Integer类源码浅析
先看一下它的继承.实现关系: public final class Integer extends Number implements Comparable<Integer> Number ...
- python分类预测模型的特点
python分类预测模型的特点 模型 模型特点 位于 SVM 强大的模型,可以用来回归,预测,分类等,而根据选取不同的和函数,模型可以是线性的/非线性的 sklearn.svm 决策树 基于" ...
- [360前端星计划]BlackJack(21点)(纯JS,附总部学习笔记)
[360前端星计划]总部学习笔记(6/6) [360前端星计划]详情跳转 游戏界面预览 目录 一.游戏介绍 1.起源 2.规则 3.技巧 二.游戏设计 1.整体UI构思 2.素材采集 3.游戏总规划 ...
- cabal替代脚本
由于网络原因,直接使用cabal update不成功,只能自己写脚本直接从网上拖包下来,自己安装. 但是这样做的缺点是需要手动处理dependency,当然,也可以把脚本写的复杂些,自动来处理depe ...
- python使用消息队列RabbitMq(进阶)
import pika connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost')) channel = ...
- 大众点评Java开发实时应用监控平台-CAT
CAT介绍 CAT是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控. CAT作为大众点评网基础监控组件,它已经在中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等)中得到广泛应 ...