210203课堂整理

210203课堂整理

map和reduce函数

1, map -->对多个序列中的元素进行合并变幻

和推导式类似

1)用法一:将原序列中的元素,按照函数给定的标准转换成新的序列

语法:
map(函数,序列) --> 返回一个序列
函数的要求:
是一个函数
有一个参数(指向后面的这个序列中的元素)
需要一个返回值(返回值就是新序列中的元素)

# 获取nums中所有元素的个位数,产生一个新的列表
nums = [19, 78, 66,51,34,98,22]
result = map(lambda item: item % 10, nums)
print(list(result))  # [9, 8, 6, 1, 4, 8, 2]
2)用法二:

语法:

map(函数,序列1,序列2,…)
序列中元素个数必须一致
函数的要求:
是一个函数
参数个数根据序列个数来定
需要一个返回值(返回值就是新序列中的元素)

# 产生一个新的序列,序列中每个元素是math和chinese的分数和
math = [1, 2, 3, 4, 5]
chinese = [1, 2, 3, 4, 5]
result = map(lambda item1, item2: item1 + item2, math, chinese)
print(list(result))  # [2, 4, 6, 8, 10]

练习:将以下两个列表按照下面的要求转换字典: {‘苹果’: 1823, ‘小爱同学’:22221, ‘耳机’: 891, ‘天猫精灵’: 78}

names = ['苹果', '小爱同学', '耳机', '天猫精灵']
nums = [1823, 22221, 891, 78]
result = map(lambda item1, item2: (item1, item2), names, nums)
print(dict(result))

# {'苹果': 1823, '小爱同学': 22221, '耳机': 891, '天猫精灵': 78}

2,reduce -->将序列中所有的元素按要求合并成一个元素

1)用法一:

语法:
reduce(函数,序列) -->只跟一个序列
函数的要求:
是一个函数
有且只有2个参数(第一个参数指向初始值,从第二次开始指向上一次计算结 果;第二个参数指向序列中的每个元素)
有一个返回值(返回值决定合并规则)
reduce无筛选功能

# 求所有元素的和

from functools import reduce
# 方式一:匿名函数
nums = [23, 34, 56, 67, 8]
result = reduce(lambda x, y: x + y, nums, 0)
print(result)    # 188

# 方式二:普通函数
def f(x, y):
    print(f'x:{x}, y:{y}')
    return x+y
result = reduce(f, nums, 0)
print(result)

练习1:求所有的数的个位的和

nums = [23, 34, 56, 67, 8]
result = reduce(lambda x, y: x + y % 10, nums, 0)
print(result)  # 28

练习2:求所有的元素的数值和

nums = [23, '78.9', 9, '10']
result = reduce(lambda x, y: x+float(y), nums, 0)
print(result)  # 120.9

练习3:求所有数字的乘积

nums = [23, 8.9, 'abc', True, '2']
result = reduce(lambda x, y: x * (y if type(y) in [int, float] else 1), nums, 1)
print(result)  # 204.70000000000002 约等于204.7

模块

1,模块

一个py文件就是一个模块,文件名就是模块名
Python中可以在一个模块中使用另一个模块
模块命名要规范
必须是全局变量

1)方法一:直接导入模块

语法:
import 模块名 -->导入所有模块
导入后需要通过‘模块名.xxx’的形式去使用

2)方法二:直接导入模块中的变量

语法 :

from 模块名 import 变量名1,变量名2,…
—>导入指定模块中的指定变量
直接写模块名不用加点,书写更简洁

2,给模块重命名

1)方法一:给模块重命名

语法:
import 模块名 as 新模块名
使用时通过‘新的模块名.xxx’的形式去使用

2)方法二:给模块中的变量重命名

语法:
from 模块名 import 变量名1 as 新变量名1,变量名2 as 新变量名2,…
根据需要改变几个变量名的个数加as
使用时直接用新变量名

3,通配符 *

语法:
**from 模块名 import *** -->导入指定模块中所有的全局变量

4,导入模块的原理

导入模块时,系统会进入被导入的模块将其全部执行一遍
只用导入一次,会自动检测之前是否有导入过,不会导致重复循环
为了避免模块里面的内容被全部执行,书写时要规定能使用的内容范围

1)不能被执行的内容

语法:
if --name --== ‘–main–’:
在main语句里面的代码不会被其他模块执行,只能在自己页面执行
在外面的代码在被取用时会被执行

1,包就是用来管理多个模块的一种py文件

包含有–init–.py文件的文件夹

2.使用包里面的模块

1)方法一:复杂不建议使用

语法:
import files.模块.变量

2)方法二

语法:
import files.模块名 as 新模块名
使用时 新模块名_read()

3)方法三

语法:
from files import jsonfile
使用时 jsonfile.json_read()

4)方法四

语法:
form files.模块 import json_read
使用时 json_read()

2,通过包导入内容时,会先执行–init–.py文件里面的内容

1)批量导入
2)提取高频使用的部分内容
3)封装通用功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值