day12

1. map和reduce

1)map - 队序列中的元素进行变换或者合并

  • 用法一:

    map(函数、序列) — 将原序列中的元素,按照函数给定的标准转换成新的序列。

    函数的要求:

    是一个函数

    有一个参数,指向序列中的元素

    需要一个返回值(返回值就是新序列中的元素)

# 获取nums中所有元素的个位数,产生一个新的列表
nums = [19, 25, 66, 88, 45]
result = map(lambda item: item % 10, nums)
print(list(result))
  • 用法二:

    map(函数,序列1,序列2…序列n)

    函数的要求:

    是一个函数

    有n个参数(分别指向后面的n个序列中的元素)

    需要一个返回值(返回值就是新序列中的元素)

# 产生一个新序列,每个元素是分数和
math = [19, 22, 33, 55]
chi = [20, 30, 50, 60]
result = map(lambda item1, item2: item1 + item2, math,chi)
print(list(result))


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

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

  • 用法一:

    reduce(函数,序列,初始值)

    函数的要求:

    函数

    有且只有两个参数(第一个参数第一次指向初始值;从第二次开始指向上一次的计算结果,第二个参数指向序列中的每个元素)

    有一个返回值(返回值决定合并规则)

from functools import reduce
# 练习1:求所有的数的个位的和
nums = [23, 34, 56, 67, 8]
result = reduce(lambda item1, item2: item1 + item2 % 10, nums, 0)
print(result)
# 练习2:求所有的元素的数值和
nums = [23, '78.9', 9, '10']
result = reduce(lambda item1, item2: item1 + float(item2), nums, 0)
print(result)
# 练习3:求所有数字的乘积
nums = [23, 8.9, 'abc', True, '2']
result = reduce(lambda item1, item2: item1 * (item2 if type(item2) in [int, float] else 1), nums, 1)
print(result)

一、模块和包

模块

1.什么是模块

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

2.导入模块

1)直接导入模块

  • import 模块名 - 导入指定模块,导入后需要通过‘模块名.xxx’的形式去使用模块中的内容

2)直接导入模块中的变量

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

3)重命名

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

4)通配符

  • from 模块名 import * - 导入指定模块中所有的全局变量

3.导入模块的原理

  • 不管以什么样的方式导入模块,在模块导入的时候系统会自动进入被导入的模块,将模块中的代码全部执行一遍

  • python中导入模块的时候会自动检测被导入的模块之前是否已经导入过,如果导入过不会重复导入

  • if __ name__ == ‘__ main __’: - 这个if里面的代码不会被其他模块执行,只能被自己执行

1.什么是包

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

2.怎么使用包中模块的内容

  • 通过包导入内容的时候,会先执行__ init __.py的内容

  • 方法一:

    导入: import 包.模块

    使用: 包.模块.内容

  • 方法二:

    导入: import 包.模块 as 新名字

    使用: 新名字.内容

  • 方法三:

    导入: from 包 import 模块

    使用: 模块.内容

  • 方法四:

    导入: from 包.模块 import 变量

    使用: 直接使用内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值