学习日志2.3
-
map 和reduce
-
map
将序列中的元素按照给定的标准转换成新的序列
函数要求:
有n个参数(对应输入序列的元素)
有一个返回值(对应输出序列的元素)
nums1 = [12, 34, 54, 34, 56, 67, 2] nums2 = list(map(lambda x: x % 10, nums1)) # map输出的是序列,需要转换 nums3 = map(lambda x, y: x + y, nums1, nums2) print(list(nums3)) # 练习:将以下两个列表按照下面的要求转换字典: {'苹果': 1823, '小爱同学':22221, '耳机': 891, '天猫精灵': 78} names = ['苹果', '小爱同学', '耳机', '天猫精灵'] nums = [1823, 22221, 891, 78] a = map(lambda x, y: (x, y), names, nums) print(dict(a))
-
reduce
按照制定规则对序列中的元素进行合并操作
函数要求:
有且只有两个参数(第一个参数第一次指向初始值,之后指向上一次的计算结果
第二个参数是序列中的每个元素)
一个返回值(返回值决定合并改制)
nums1 = [12, 34, 54, 34, 56, 67, 2] result = reduce(lambda total, x: total + x % 10, nums1, 0) print(result) # 练习1:求所有的数的个位的和 nums = [23, 34, 56, 67, 8] result = reduce(lambda total, x: total + x % 10, nums, 0) print(result) # 练习2:求所有的元素的数值和 nums = [23, '78.9', 9, '10'] result = reduce(lambda total, x: total + float(x), nums, 0) print(result) # 练习3:求所有数字的乘积 nums = [23, 8.9, 'abc', True, '2'] result = reduce(lambda total, x: total * x if type(x) in (float, int) else total, nums, 1) print(result)
-
-
模块
# 一个py文件就是一个模块 # python中可以在一个模块中使用另一个模块中所有的全局变量 """ import 模块名 导入指定模块,导入后通过点的形式取用模块内容 from 模块名 import 变量1、变量2…… 导入模块中部分变量 import 模块名 as 重命名 from 模块名 import 变量 as 重命名 通配符 from 模块名 import * 导入模块中所有全局变量 """ # 导入模块是将该模块全部执行一遍 # 每一个模块的导入只会被执行一次 # 导入屏蔽语句 # 在被导入时,让部分代码不被执行 if __name__ == '__main__': pass
-
包
# import 包.模块名 # 使用方法 包.模块名.变量名 # import 包.模块名 as 重命名 # from 包 import 模块 # from 包.模块 import 变量 import test.p1 as p1 import test.p2 as p2 p1.func2() p2.func1() # __init__文件 在导入包时 该文件最先被执行 # 可以通过该文件修改模块或者变量的调用方式