第五章、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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值