day012-模块和包

1,map和reduce

① map - 对序列中的元素进行变换或者合并

用法一:
map(函数, 序列) - 将原序列中的元素,按照函数给定的标准转换成新的序列。
函数的要求:
a. 是一个函数
b. 有一个参数(指向后面的这个序列中的元素)
c. 需要一个返回值(返回值就是新序列中的元素)

用法二:
map(函数, 序列1, 序列2)
函数的要求:
a. 是一个函数
b. 有两个参数(分别指向后面的两个序列中的元素)
c. 需要一个返回值(返回值就是新序列中的元素)

# 获取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]

# 产生一个新的序列,序列中的每个元素是math和chinese的分数和: 
math = [19, 23, 34, 56, 34]
chinese = [10, 20, 30, 40, 50]
result = map(lambda item1, item2: item1 + item2, math, chinese)
print(list(result))   # [29, 43, 64, 96, 84]

# 练习:将以下两个列表中按位置对应的元素转换字典: 
names = ['苹果', '小爱同学', '耳机', '天猫精灵']
nums = [1823, 22221, 891, 78]
result = map(lambda item1, item2: (item1, item2), names, nums)
print(dict(result))   # {'苹果': 1823, '小爱同学': 22221, '耳机': 891, '天猫精灵': 78}

# 练习:将以下三个列表中按位置对应的元素合并为一个元素成为新的列表:
nums1 = [19, 78, 778, 90]
nums2 = [1, 89, 9, 2]
nums3 = [20, 23, 1, 119]
result = map(lambda x, y, z: int(f'{x}{y}{z}'), nums1, nums2, nums3)
print(list(result))	# [19120, 788923, 77891, 902119]

② reduce() - 按照指定规则对序列中的元素进行合并操作

用法一:
reduce(函数, 序列, 初始值)
函数的要求:
a. 函数
b. 有且只有两个参数(第一个参数第一次指向初始值,从第二次开始指向上一次的计算结果;第二个参数指向序列中的每个元素)。
c. 有一个返回值(返回值决定合并规则)

# 求所有元素的和
nums = [23, 34, 56, 67, 8]
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 r, item: r+item % 10, nums, 0)
print(result)


# 练习2:求所有的元素的数值和
nums = [23, '78.9', 9, '10']
result = reduce(lambda r, item: r+float(item), nums, 0)
print(result)

# 练习3:求所有数字的乘积
nums = [23, 8.9, 'abc', True, '2']
result = reduce(lambda r, item: r*(item if type(item) in [int, float] else 1), nums, 1)
print(result)

③ 模块

什么是模块
一个py文件就是一个模块,文件名就是模块名
python中可以在一个模块中去使用另外一个模块(命名要规范)中所有的全局变量,但是得先导入。

导入模块
1)直接导入模块
import 模块名 - 导入指定模块,导入后需要通过’模块名.xxx’的形式取使用模块中内容

2)直接导入模块中的变量
from 模块名 import 变量名1, 变量名2,… - 导入指定模块中的指定变量;导入后直接使用变量

3)重命名
import 模块名 as 新模块名 - 给模块重命名,重命名后使用新的名字
from 模块名 import 变量名1 as 新变量名1, 变量名2 as 新变量名2,… - 导入的时候给指定变量重命名

4)通配符
from 模块名 import * - 导入指定模块中所有的全局变量

导入模块的原理
不管以什么样的方式导入模块,在导入模块的时候系统会自动进入被导入的模块,将模块中的代码全部执行一样
python导入模块的时候会自动检测被导入的模块之前是否已经导入过,如果已经导入过不会重复导入

④ 包

包就是用来管理多个模块的一种特殊的文件夹 (包含有__init__.py文件的文件夹)

# 2.怎么使用包中模块的内容
# ===========方法一:=========
# import files.jsonFile
# files.jsonFile.json_read()

# ===========方法二:=========
# import files.jsonFile as jf
# jf.json_read()

# ==========方法三:=========
# from files import jsonFile
# jsonFile.json_read()

# ==========方法四:=========
# from files.jsonFile import json_read
# json_read()


# 3.__init__.py
# 通过包导入内容的时候,会先执行__init__.py文件中的内容

# import files
# files.jsonFile.json_read()
# print(files.otherFile.abc)

# from files import *
# json_read()
# text_write()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值