python函数高级应用 python函数高级用法

python 查看dataframe每列有多少个不同元素方法一python函数高级应用:
mylist = set(say)#say为所要统计python函数高级应用的列表
for item in mylist:#将列表中的元素无重复的抽取出来,赋值给另一个列表
print itemstr( say.count(item))#list.count(item)输出item在list中出现的次数
方法二:
counts = { }#字典
for x in time_zones:#time_zones 为列表
ifx in counts:
counts[x]= 1
else:
counts[x] = 1
printcounts
方法三:
(Series与Datafram用法相同)
import numpy as np
import pandas as pd
from pandas import DataFrame
from pandas import Series
ss = Series(['Tokyo', 'Nagoya', 'Nagoya', 'Osaka', 'Tokyo', 'Tokyo'])
ss.value_counts()#value_counts 直接用来计算series里面相同数据出现的频率
扩展资料:
python函数的其他高级用法
1.使用函数变量:
Python 的函数也是一种值:所有函数都是 function 对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样 。
2.使用函数作为函数形参:
有时候需要定义一个函数,该函数的大部分计算逻辑都能确定,但某些处理逻辑暂时无法确定,这意昧着某些程序代码需要动态改变,如果希望调用函数时能动态传入这些代码,那么就需要在函数中定义函数形参,这样即可在调用该函数时传入不同的函数作为参数,从而动态改变这段代码 。
3.使用函数作为返回值:
程序中,定义python函数高级应用了一个 get_math_func() 函数,该函数将返回另一个函数 。接下来在 get_math_func() 函数体内的 ①、②、③ 号粗体字代码分别定义了三个局部函数,最后 get_math_func() 函数会根据所传入的参数,使用这三个局部函数之一作为返回值 。
在定义了会返回函数的 get_math_func() 函数之后,接下来程序调用 get_math_func() 函数时即可返回所需的函数 。
python 高阶函数有哪些1、高阶函数
变量可以指向函数,函数的参数可以接收变量,那么函数可以接收另一个函数作为参数,这种函数称为高阶函数 。
(1)把函数作为实参
(2)把函数作为返回值
2、系统的内置高阶函数
(1)map函数:接收两个参数,一个是函数 , 一个是序列,map将传入的函数依次作用到序列的每个元素,并且把结果作为新的列表返回
(2)reduce函数:把一个函数作用到一个序列上,这个函数必须接收两个参数,reduce把结果和序列的下一个元素做累积计算
(3)filter函数:也接收一个函数和一个序列,和map函数不同的是,filter函数把传入的函数依次作用于每个元素,然后返回返回值是True的元素
(4)sorted函数:排序函数
把用户名按照首字母不区分大小写排序
(5)sorted()函数按照关键字排序
关键字:商品个数
(6)sorted()函数按照关键字排序,用键值来查找
(7)lambda匿名函数:有时候传参数时不需要显示自定义的函数,直接传入匿名函数更方便;冒号前面的x,y表示函数参数,匿名函数不需要担心函数名的冲突,匿名函数也是一个函数对象,可以把匿名函数赋值给一个变量,再利用变量来调用函数,匿名函数也可以作为返回值返回
3、高阶函数的应用:
(1)sorted函数:
(2)sorted函数默认是从小到大排序
4、装饰器
装饰器就是用来装饰函数的:想要增加原有函数的功能 , 但是不希望修改原有函数的定义,在代码运行期间动态增加功能的方式
(1)此装饰器的功能:计算函数的运行时间
import functools
@functools.wraps(f)##保留原有函数的属性
运行结果:
(2)此装饰器的功能:用户登录认证
运行结果:
(3)此装饰器的功能:认证用户的同时,显示用户的转账金额
import inspect
inspect.getcallargs()将传的参数封装为一个字典,字典的key值是形式参数,value值是实参
(4)此装饰器的功能:确保收到的每个参数都是整数,是整数就求和,否则抛出错误
(5)此装饰器的功能:给装饰器传参数,是整数和浮点数就求和
python学习网,大量的免费python视频教程,欢迎在线学习!
20201014-python高级函数作业1、定义一个使用不定长参数的函数 , 并在函数中打印出参数及其类型,统计传入参数的个数
def test(a,b,*args,c=10,**kwargs):
print("a=",a)
print("b=",b)
print("args=",args)
print("c=",c)
print("kwargs=",kwargs)
print("参数总长度:",1 1 len(args) 1 len(kwargs))
test(1,2,3,4,5,m=4)
def test(a,b,c=10,*args,**kwargs):
print("a=",a)
print("b=",b)
print("args=",args)
print("c=",c)
print("kwargs=",kwargs)
print("参数总长度:",1 1 len(args) 1 len(kwargs))
test(1,2,3,4,5,m=4)
2、定义一个函数max,接受的参数类型是数值 , 最终返回两个数中的最大值
def max(num1,num2):
if num1num2:
return num1
else:
return num2
3、定义一个函数min,接受的参数类型是数值 , 最终返回两个数中的最小值
def min(num1,num2):
if num1num2:
return num1
else:
return num2
4、分别定义加减乘除四个函数实现两个数之间的加减乘除操作
# 加法
def add(a,b):
return a b
# 减法
def sub(a,b):
return a-b
# 乘法
def mul(a,b):
return a*b
# 除法
def div(a,b):
if b==0:
【python函数高级应用 python函数高级用法】return 0
else:
return a/b
5、分别定义加减乘除四个函数,然后实现多个数之间的累加累减累除累乘操作,如[1,2,3,4,5],累加即是1 2 3 4 5,注意当使用除法时 , 应判断被除数不能为0
#累加
def add(a,b,*args):
s=a b
for i in args:
s=s i
return s
#累减
def sub(a,b,*args):
s=a-b
for i in args:
s=s-i
return s
#累乘
def mul(a,b,*args):
s=a*b
for i in args:
s=s*i
return s
#累除
def div(a,b,*args):
if b==0:
return a
else:
s=a/b
for i in args:
if i ==0:
continue
else:
s=a/b
return s
6、使用不定长参数定义一个函数max_min,接受的参数类型是数值,最终返回这些数中的最大值和最小值——错题
def max_min(*args):
max=0
min=0
if len(args)==0:
return 0,0
elif len(args)==1:
return args[0],args[0]
else:
max=args[0]
min=args[0]
for i in args:
if maxi:
max=i
if mini:
min=i
return max,min
7、定义一个函数,返回n的阶乘的最后结果,并打印出如5阶乘"5!=120”的效果——错题
def f(n):
s=1
for i in range(n):
s=s*(i 1)
print('%s!=%s' %(n,s))
f(5)
8、定义一个函数,返回由n(包含n)以内的奇数或者偶数组成的列表,默认返回全是奇数的列表
def f(n,type='j'):
ls=[]
if type=='j':
for i in range(1,n 1):
if i%2==1:
ls.append(i)
if type=='o':
for i in range(1,n 1):
if i%2==0:
ls.append(i)
return ls
9、定义一个函数,打印出n以内的所有的素数(指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 。)——错题
def f(n):
ls=[2]
for i in range(3,n):
for j in range(2,i):
if i%j == 0:
break
else:
ls.append(i)
print(ls)
10、定义一个函数,接受三个参数 , 分别为字符串s、数值a1、数值a2 , 将字符串s从下标a1开始的a2个字符删除 , 并把结果返回,a2默认值为0——错题
def cut_str(s,a1,a2=0):
length = len(s)
if a1 1length or a2 == 0:
return s
else:
s1 = s[:a1]
s2 = s[a1 a2:]
return s1 s2
print(cut_str("hello",6,1))
11、请定义两个函数,一个函数画正方形,一个函数画三角形,并且可以从键盘输入值来决定画正方形还是画三角形以及决定是否退出程序
我的答案:
import turtle
def z():
for i in range(4):
turtle.fd(20)
turtle.right(90)
def s():
for i in range(3):
turtle.fd(20)
turtle.right(120)
m=input('请输入值,z画正方形,s画三角形,其它任意键退出程序:')
if m =='z':
z()
elif m=='s':
s()
else:
print('退出程序')
官方答案:
def square(n):
for i in range(n):
print("*"*n)
def triangle(n):
for i in range(n):
print("*"*(i 1))
12、定义函数findall,实现对字符串find方法的进一步封装,要求返回符合要求的所有位置的起始下标,如字符串"helloworldhellopythonhellochellojava",需要找出里面所有的"hello"的位置 , 最后将返回一个元组(0,10,21,29) , 即将h的下标全部返回出来,而find方法只能返回第一个——没懂
def findall(string, s):
ret = []
if s=='':
return ret
while True:
index = string.find(s)
if index != -1:
if len(ret)!=0:
ret.append(ret[-1] index len(s))
else:
ret.append(index)
string = string[index len(s):]
else:
break
return ret
print(findall("abc-abc-abc-","-"))
python高阶函数有哪些1、map
map()函数接受两个参数 , 一个是函数,一个是Iterable , map将传入的函数依次作用到序列的每一个元素上,并把结果作为新的Iterator返回 。
举例,比如我们有一个函数f(x)=x*2,要把这个函数作用在一个list[1, 2, 3, 4, 5, 6, 7, 8,
9]上 , 就可以用map()实现 。
def f(x):
... return x*2
...
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
list(r)
[2, 4, 6, 8, 10, 12, 14, 16, 18]
所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x*2,还可以计算任意复杂的函数 , 比如把这个list所有的数字转为字符串:
list(map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9]))
["1", "2", "3", "4", "5", "6", "7", "8", "9"]
2、reduce
reduce是把一个函数作用在一个序列[x1, x2,
x3……]上 , 这个函数必须接收两个参数 , reduce把结果继续和序列的下一个元素做累计计算 。简单来说,就是先计算x1和x2的结果,再拿结果与x3计算,依次类推 。比如说一个序列求和,就可以用reduce实现 。
from functools import reduce
def add(x, y):
... return xy
...
reduce(add, [1, 3, 5, 7, 9])
25
也就是说,假设python没有提供int()函数,你完全可以自己写一个把字符串转化为整数的函数 , 而且只需要几行代码 。
3、filter
用于过滤序列,和map函数类似,filter也接收一个函数和一个序列,不同于map的是,filter把传入的函数依次作用于每一个元素,然后根据返回值是True还是False决定保留还是丢弃该元素,例如,在一个list中 , 删掉偶数,只保留奇数,可以这么写:
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
把一个序列中的空字符串删掉,可以这么写:
def not_empty(s):
return s and s.strip()
list(filter(not_empty, ["A", "", "B", None, "C", " "]))
# 结果: ["A", "B", "C"]
可见用filter()这个高阶函数,关键在于正确实现一个筛选函数 。
4、sorted
无论冒泡排序还是快速排序 , 排序的核心是比较两个元素的大小 。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来,Python内置的sorted()函数就可以对list进行排序:
sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
Python 函数进阶-高阶函数高阶函数就是能够把函数当成参数传递的函数就是高阶函数python函数高级应用,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数 。
高阶函数可以是你使用def关键字自定义的函数 , 也有Python系统自带的内置高阶函数 。
我们下面的例子中,函数 senior 的参数中有一个是函数,那么senior就是一个高阶函数python函数高级应用;函数 tenfold 的参数不是函数,所以tenfold就只是一个普通的函数 。
functionpython函数高级应用:函数,可以是 自定义函数 或者是 内置函数python函数高级应用;
iterable:可迭代对象,可迭代性数据 。(容器类型数据和类容器类型数据、range对象、迭代器)
把可迭代对象中的数据一个一个拿出来,然后放在到指定的函数中做处理,将处理之后的结果依次放入迭代器中 , 最后返回这个迭代器 。
将列表中的元素转成整型类型 , 然后返回出来 。
列表中的每一个数依次乘 2的下标索引 1 次方 。使用自定义的函数,配合实现功能 。
参数的意义和map函数一样
filter用于过滤数据,将可迭代对象中的数据一个一个的放入函数中进行处理,如果函数返回值为真,将数据保留;反之不保留,最好返回迭代器 。
保留容器中的偶数
参数含义与map、filter一致 。
计算数据,将可迭代对象的中的前两个值放在函数中做出运算,得出结果在和第三个值放在函数中运算得出结果,以此类推,直到所有的结果运算完毕,返回最终的结果 。
根据功能我们就应该直到 , reduce中的函数需要可以接收两个参数才可以 。
将列表中的数据元素组合成为一个数,
iterable:可迭代对象;
key:指定函数,默认为空;
reverse:排序的方法,默认为False,意为升序;
如果没有指定函数 , 就单纯的将数据安札ASCII进行排序;如果指定了函数,就将数据放入函数中进行运算 , 根据数据的结果进行排序,返回新的数据,不会改变原有的数据 。
注意 , 如果指定了函数,排序之后是根据数据的结果对原数据进行排序 , 而不是排序计算之后的就结果数据 。
将列表中的数据进行排序 。
还有一点就是 sorted 函数可以将数据放入函数中进行处理,然后根据结果进行排序 。
既然有了列表的内置函数sort,为什么我们还要使用sorted函数呢python函数高级应用?
高阶函数就是将函数作为参数的函数 。
文章来自
python函数高级应用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python函数高级用法、python函数高级应用的信息别忘了在本站进行查找喔 。

    推荐阅读