各位用户为了找寻关于详谈Python基础之内置函数和递归的资料费劲了很多周折。这里教程网为您整理了关于详谈Python基础之内置函数和递归的相关资料,仅供查阅,以下为您介绍关于详谈Python基础之内置函数和递归的详细内容
一、内置函数
下面简单介绍几个:
1.abs() 求绝对值
2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回 True
3.any() 如果 iterable 的任何元素为真,则返回 True。如果iterable为空,则返回 False
4.callable() 如果 object 参数出现可调,则返回 True,否则返回 False
5.divmod() 以两个(非复数)数字作为参数,并在使用整数除法时返回由商和余数组成的一对数字。对于混合操作数类型,二进制算术运算符的规则适用。对于整数,结果与 (a//b,a%b) 相 同。对于浮点数,结果为 (q,a%b),其中q 通常为 math.floor(a/b),但可以小于1
6.enumerate() 参数必须是可迭代对象,函数运行结果得到一个迭代器,输出元素及对应的索引值
7.eval() 把字符串中的提取出来执行
8.frozenset() 不可变集合,frozenset()定义的集合不可增删元素
9.globals() 返回表示当前全局符号表的字典。这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,而不是从其调用它的模块)
10.round() 对参数进行四舍五入
11.sorted() 排序,不改变原列表
? 1 2 3l
=
[
1
,
2
,
4
,
9
,
-
1
]
print
(
sorted
(l))
#从小到大
print
(
sorted
(l,reverse
=
True
))
#从大到小
12.zip() 拉链函数
创建一个迭代器,聚合来自每个迭代器的元素。
返回元组的迭代器,其中 i-th元组包含来自每个参数序列或迭代的第 i 个元素。当最短输入可迭代被耗尽时,迭代器停止。使用单个可迭代参数,它返回1元组的迭代器。没有参数,它返回一个空的迭代器
13.max()
返回可迭代的最大项或两个或更多参数中最大的一个。
如果提供了一个位置参数,它应该是一个 iterable。返回迭代中的最大项。如果提供了两个或多个位置参数,则返回最大的位置参数。
max()可以指定key(也就是指定要比较的部分)
14.map() 映射
返回一个迭代器,它应用 function 到 iterable 的每个项目,产生结果
? 1 2 3l
=
[
1
,
2
,
3
,
4
]
m
=
map
(
lambda
x:x
*
*
2
,l)
print
(
list
(m))
-
-
-
-
-
>[
1
,
4
,
9
,
16
]
15.reduce() 合并
? 1 2 3 4 5 6from
functools
import
reduce
res
=
0
for
i
in
range
(
100
):
res
+
=
i
print
(res)
16.filter() 过滤 保留布尔值为True的元素
? 1 2names
=
[
'alex_sb'
,
'yuanhao_sb'
,
'wupeiqi_sb'
,
'egon'
]
print
(
list
(
filter
(
lambda
name:name.endswith(
'_sb'
),names)))
-
-
-
>[
'alex_sb'
,
'yuanhao_sb'
,
'wupeiqi_sb'
]
详细的内置函数介绍可以参照以下:https://www.rddoc.com/doc/Python-3.6.0/library/functions/
二、匿名函数(lambda表达式)
? 1 2 3 4 5def
func(x):
return
x
*
*
2
print
(func(
2
))
lambda
x:x
*
*
2
#上边的函数就可以直接写成这种形式
lambda函数自带返回值
匿名函数只能取代一些很简单的函数,主要与其他函数搭配使用
还有一种情况是有些函数定义后只使用一次就用不到了,如果不删除的话会占内存空间,删除又会很麻烦,这时就可以用到匿名函数
三、递归
在调用一个函数的过程中,直接或间接使用了函数本身
递归效率很低,需要在进入下一次递归时保留当前状态,Python不像其他语言,没有尾递归,但是Python有限制条件,不允许用户无限递归
递归的特点:
1.必须要有一个明确的结束条件
2.每次进入更深一层递归时,问题规模相比上次递归都应该有所减少
3.递归效率不高,递归层数过多会导致栈溢出
示例:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47# 1 文件内容如下,标题为:姓名,性别,年纪,薪资
#
# egon male 18 3000
# alex male 38 30000
# wupeiqi female 28 20000
# yuanhao female 28 10000
#
# 要求:
# 从文件中取出每一条记录放入列表中,
# 列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式
#
# 2 根据1得到的列表,取出薪资最高的人的信息
# 3 根据1到的列表,取出最年轻的人的信息
# 4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
# 5 根据1得到的列表,过滤掉名字以a开头的人的信息
# 6 使用递归打印斐波那契数列(前两个数的和得到第三个数)
# 0 1 1 2 3 4 7...
with
open
(
'b.txt'
,encoding
=
'utf-8'
)as f:
l
=
[{
'name'
: line.split()[
0
],
'sex'
: line.split()[
1
],
'age'
: line.split()[
2
],
'salary'
: line.split()[
3
]}
for
line
in
f]
#2.
print
(
max
(l,key
=
lambda
i:i[
'salary'
]))
#3.
print
(
min
(l,key
=
lambda
i:i[
'age'
]))
#4.
m
=
map
(
lambda
x:x[
'name'
].capitalize(),l)
print
(
list
(m))
#5.
print
(
list
(
filter
(
lambda
x:
not
(x[
'name'
].startswith(
'a'
)),l)))
#6.
def
f(n):
if
n
=
=
0
:
return
0
elif
n
=
=
1
:
return
1
else
:
if
n
=
=
1000
:
return
f(
1000
)
else
:
return
f(n
-
2
)
+
f(n
-
1
)
for
i
in
range
(
150
):
print
(f(i))
以上这篇详谈Python基础之内置函数和递归就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。