python系列文章目录
python基础(01变量&数据类型&运算符)
python基础(02序列共性)
python基础(03列表和元组)
python基础(04字符串&字典)
python基础(05集合set)
python基础(06控制语句)
python基础(07函数)
python基础(08类和对象)
python基础(09闭包&装饰器)
python基础(10异常处理)
python基础(11文件读取)
python基础(12迭代器&生成器)
python基础(13魔法方法介绍)
文章目录
前言
本文主要讲python中的一些内置函数,这些函数,动手敲一遍,理解其用法即可,python基础系列到这一篇,基本进入尾声了,加油!
一、map()
1.概念
- 可以接收两个参数,一个是函数、一个是序列
- map将传入的函数依次作用到序列的每个元素
- 并把结果作为新的list返回
2.例子1
一个函数f(x)=x2 函数作用在一个list[1,2,3,4,5] 求平方
普通实现
a=[1,2,3,4,5,6,7,8]
def f(x):
return x*x
result_list=[]
for i in a:
result_list.append(f(i))
print(result_list)
map()实现
a=[1,2,3,4,5,6,7,8]
def f(x):
return x*x
it=map(f,a) #返回结果:可迭代的对象 会自动遍历把a的每一个元素传进函数
print(type(it)) #map 可迭代对象
print(list(it)) #map是一个可迭代对象 可直接传入list
print(list)
3.例子2
map可将数字转化成字符串
普通实现
b=10
s=str(b)
print(type(s))
map()实现
b=[1,2,3,4,5,6,7,8]
l=map(str,b)
print(list(l)) #['1', '2', '3', '4', '5', '6', '7', '8']
4.例子3
传入2个列表
a=[1,2,3,4]
b=[10,20,30] #获取小的一个列表 按照顺序相加
def f(x,y):
return x+y
h=map(f,a,b)
print(list(h))
5.例子4
两个列表 一个lst1 一个lst2 相同位置的元素进行比较 大的一个数赋值给lst3
def f1(x,y):
if x>y:
return x
else:
return y
a=[1,4,3]
b=[6,1,5]
#map() 是一个可迭代的对象
f=map(f1,a,b)
print(list(f))
#也可以用匿名函数
a=[3,2,1]
def f2(x):
return x+1
b=list(map(lambda x: x+1,a)) #()迭代器对象
print(b) #[4, 3, 2]
6.例子5
大写转化成小写
a=["ASC","JIA","YHG"]
def to_lower(x):
return x.lower()
# b=list(map(to_lower,a)) # 第一种调用函数 ()迭代器对象
b=list(map(lambda x:x.lower(),a)) #第二种 匿名函数 直接调用lower方法 不用自己写函数
print(b) #['asc', 'jia', 'yhg']
二、filter()
1.作用
- 过滤序列,和map类型,filter()也接收一个函数和一个序列,和map()不同的是把传入的函数依次作用于每个元素
- 根据返回值是true 还是False 决定保留还是丢弃该元素,true保留
2.例子
题目1:在一个list中,删掉偶数,只保留奇数
def is_odd(n):
return n%2==1
l=filter(is_odd,[1,2,4,5,6])
print(list(l))
题目2:filter序列中的空字符串删掉
普通实现
普通实现:'' None 都代表false
a=["A","B",None,"C",'']
b=None
if b: #true就会执行下一步
print("b") #不会输出 none是false
filter实现
filter实现
' '是空字符串 但是有内容 是true 也会打印
strip()可以过滤掉字符两边的空格 就可以解决这个问题 就不会打印了
def not_empty(s):
return s and s.strip()
l=filter(not_empty,["A","B",None,"C",' ',''])
print(list(l)) #['A', 'B', 'C']
三、reduce()
1.作用
- 把一个函数作用在一个序列[x1,x2,x3,x4,x5]上,这个函数必须接收两个参数 reduce把结果继续和序列的下一个元素做累积计算
2.例子
问题1:对一个序列求和
普通实现
from functools import reduce
a=[1,2,3,4,5,6,7,8]
sum=0
for i in a:
sum+=i
print(sum)
reduce实现
from functools import reduce
a=[1,2,3,4,5,6,7,8]
def add(x,y):
return x+y
sum=reduce(add,a)
print(sum)
问题2:如果想把序列[1,3,5,7,9]变成整数13579,将列表中的每个元素乘以10后加上后一个元素
from functools import reduce
def fn(x,y):
return x*10+y
a=reduce(fn,[1,3,5,7,9])
print(a)
四、zip()
1.作用
- 两个序列作用为一个序列
2.例子
例子1:打印元组
for item in zip(['a','b','c'],(1,2,3)):
print(item)
-----------------------
结果
('a', 1)
('b', 2)
('c', 3)
例子2:打印字典
iter=dict(zip(['a','b','c'],(1,2,3)))
print(iter)
---------------------------------
结果
{'a': 1, 'b': 2, 'c': 3}
五、enumerate()
1.作用
作用于序列中的每一个元素 返回一个包含元素下标和元素本身的元组
2.例子
for item in enumerate('abcdefg',2):
print(item)
----------------------------------
打印结果:元素都会打印 但是排序数字会从指定数字开始
(2, 'a')
(3, 'b')
(4, 'c')
(5, 'd')
(6, 'e')
(7, 'f')
(8, 'g')
六、sorted
1.作用
- 通常的排序核心是比较两个数字的大小
- 如果是字符串,通常规定:对于两个元素x和y,如果认为x<y,返回-1 x==y,返回0,x>y,返回1,这样可以通过结果直接排序
- python中内置函数:sorted()就可以对list进行排序
- 默认升序,reverse=True 降序
2.例子
例子1:数字排序
sorter1=sorted([1,3,6,-20,34],reverse=True)
print(sorter1)
例子2:字符串排序
sorter2=sorted(['abc','jiajia','佳佳','ABC','123'])
print(sorter2)
例子3:绝对值大小排序
- sorted是高阶函数,还可以接收一个key函数来实现自定义的排序
- #数值列表:按照绝对值的大小进行排序
sorter3=sorted([-20,-90,40,10,16],key=abs)
print(sorter3) #[10, 16, -20, 40, -90] 绝对值升序
例子4:字符串忽略大小写排序
sorter4=sorted(['abc','jiajia','佳佳','ABC','123'],key=str.lower)
print(sorter4)
例子5:元组排序
lst=[('david',90),('cc',80),('xiaoniu',85)]
lst1=sorted(lst,key=lambda x:x[1])
print(lst1)
总结
本文介绍的一些python内置函数,一定要动手敲一遍,知道是什么含义,理解其用法即可,不必死记硬背,用到的时候知道有这个函数即可。