栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第五章、Python常用内置类

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第五章、Python常用内置类

本章主要介绍 python内置有用的集合工具类和方法、以及复数

1、 map
  • map 集合元素转换另一种格式,可以理解一种映射公式,将变量代入公式算出值
  • 语法
# function 就可以认为是公式,可以函数,也可以是lambda,lambda就是简写的语法糖而已
# map(function, iterable, ...)

  • 例如
# 定义一个将摄氏度转换华氏度函数
def fahrenheit(celsius):
    return (9/5)*celsius + 32

# 将摄氏度的列表
temps = [0, 22.5, 40, 100]

# 通过map转换成华氏度
F_temps = map(fahrenheit, temps)

# 打印转换华氏度的结果
print(list(F_temps))

# 其实可以用lambda式表达
list(map(lambda x : (9/5)*x + 32, temps))


# map可以接收多个参数,一般来说长度要一样,否则在以最短为准
a = [1,2,3,4]
b = [5,6,7,8]
c = [9,10,11,12]
print(map(lambda x,y:x+y, a, b))

# 三个数组的值相加
list(map(lambda x,y,z:x+y+z, a,b,c))

2、reduce
  • reduce 循环累计结果与下一个元素作用,有点类似疯狂套娃, f(f(f(x))…) , reduce 是functools类中,需要导入类
  • 语法
# reduce(function, iterable) 返回一个值
#[function(function(s1 ,s2),s3),...,sn]

from functools import reduce
# 累加
lst = [47,11,42,13]
print(reduce(lambda x,y: x+y,lst))

# 找出最大值
max_find = lambda a,b: a if(a > b) else b
print(reduce(max_find, lst))
3、filter
  • 过滤器,过滤满足条件的元素
  • 语法
# filter(function, iterable)
# function 过滤函数,返回bool值,true表示元素满足条件,false表示不满足条件, iterable表示过滤元素的集合

# 过滤偶数
def even_check(num):
    if num%2 == 0:
        return True

lst = range(20)

print(list(filter(even_check, lst)))

# 用lambda 表达式
print(list(filter(lambda x: x%2==0, lst)))

4、zip
  • 可以将多个list按照下标合并一个元组,元组包含某个索引的对应多个list元素
  • 如果多个list长度不一致,以最短为主
  • 利用zip可以同时变量多个list,以索引作为一组
  • 语法
# zip(iterable, iterable1,...)
## 将数组变成二元组
x = [1,2,3]
y = [4,5,6]

# [(1, 4), (2, 5), (3, 6)]
print(list(zip(x,y)))

# [(1, 4), (2, 5), (3, 6)]
x = [1,2,3]
y = [4,5,6,7,8]
print(list(zip(x,y)))

# 对于map 它默认存储是key [('a', 'c'), ('b', 'd')]
d1 = {'a':1, 'b':2}
d2 = {'c':4, 'd':5}
print(list(zip(d1,d2)))

# 可以是设置value [('c', 1), ('d', 2)]
print(list(zip(d2, d1.values())))

# 切换两个值 {'a': 4, 'b': 5}
def switcharoo(d1, d2):
    dout = {}

    for d1key, d2val in zip(d1, d2.values()):
        dout[d1key] = d2val
    return dout

print(switcharoo(d1,d2))

5、enumerate
  • 将集合的索引标记出来,不需要定义额外变量,方便计数和索引位置

  • 它也支持从某个位置开始遍历元素

  • 语法

# enumerate(iterable)

# enumerate 如果为了计数或index,可以使用这个方法

lst = ['a','b','c']

for number, item in enumerate(lst):
    print(number)
    print(item)

for count, item in enumerate(lst):
    if count >=2:
        break
    else:
        print(item)

# 可以重写计数起始位置 [(3, 'March'), (4, 'April'), (5, 'May'), (6, 'June')]
months = ['March', 'April', 'May', 'June']
print(list(enumerate(months, start=3)))

6、all和any
  • 集合中bool值判断函数,
  • all表示集合元素都为True,方法返回true, 否则false
  • any表示集合任意元素为True,方法返回true,否则false
# 语法
# all(iterable)
# any(iterable)

# all 所有条件都有满足, any只有满足一个条件

lst=[True, True, False, True]
print(all(lst))

print(any(lst))
7、complex(复数)
  • 一般用于数学计算
  • 语法
# complex(实数,虚数)

complex(2,3)

# (2+3j)
print(complex(2,3))

# (12+2j)
print(complex('12+2j'))

总结

1、一般函数定义都可以转成lambda的格式
2、对应函数可以嵌套多层, 比如 list(map(function,filter(filter_function,list)))
3、enumerate 和zip都是辅助变量数据,减少定义外部变量
4、filter一般会配合 map或reduce进行使用,过滤有效数据然后做一些处理

参考文档
  • https://github.com/Pierian-Data/Complete-Python-3-Bootcamp.git
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号