目录
1. 内置函数:map()函数——对于列表(或其他序列类型),对每个元素执行相同的操作
基本语法:map(func,seq1[,seq2,...])
func - 函数,seq - 一个或多个可迭代序列,将func依次作用在序列seq1[,seq2,...]的每个元素(🔺 注意是每个元素!!!),得到一个新的可迭代序列(map对象)。
1.1 当序列seq只有一个时,将函数func作用于这个seq的每个元素(🔺 注意是每个元素!!!)上,并得到一个新的可迭代序列;
1.2 当序列seq有多个时,每个seq的同一位置的元素(🔺 注意是每个同一位置的元素!!!)同时传入多元的func函数,把得到的每一个返回值存放在一个新的可迭代序列中。
2. 内置函数:sum()函数 —— 对系列进行求和计算(🔺 注意是每个元素!!!)
基本语法:sum(iterable[, start])
iterable – 可迭代对象,如:列表、元组、集合 start – 指定相加的参数,如果没有设置这个值,默认为0。
3. 内置函数:reversed()函数 —— 该方法返回一个逆序序列的迭代器(用于遍历该逆序序列)(🔺 一般用于列表逆序!!!)
基本语法:reversed(seq)
4. 内置函数:reduce()函数 ——对参数序列中元素进行累积
基本语法:reduce(func, seq[, initial])
initial – 可选,初始参数 注意:在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在functools模块里,使用需要通过引入functools模块来调用reduce函数。
5. 内置函数:eval()函数 —— 用来执行一个字符串表达式,并返回表达式的值
基本语法:eval(expression[,globals[,locals]])
expression – 表达式
globals – 变量作用域(全局),如果被提供,必须是一个字典对象
locals – 变量作用域(局部、但会覆盖globals),如果被提供,可以说任何映射对象
6. 内置函数:filter()函数 —— “过滤掉”,用于过滤序列,即用函数func过滤掉iterable序列中不符合条件的元素,返回由符合条件的元素组成的新序列;
基本语法:filter(func,iterable)
序列的每个元素作为参数传递给函数进行判断,最后将返回值为True的元素放到新序列(filter对象)中。
7.内置函数 sorted()函数 —— 对列表元素进行排序(新建一个列表作为返回值)
基本语法:sorted(iterable, key=None, reverse=False)
key – 指定一个函数(代表排序的规则),此函数在每次元素比较时被调用;
reverse – 是否逆序,默认False升序排序。
8. lambda表达式 —— 定义一个匿名函数
基本语法:lambda [arg1[,arg2,.....argn]]: expression
9.1round()函数 - round(avg, 3)
9.2 格式化输出 - "%.3f" % avg
9.3decimal函数 - Decimal(avg).quantize(Decimal("0.000"))
二、习题及代码
2.1 6道简单例题~
# 练习内容:综合应用与例题解析
# 编写者:LWW
# 开发时间:2022/5/12 16:52
# 例题2-1 编写程序,输入一个整数,然后输出各个数字之和
num = input('2-1 请输入一个整数:') # 1234
print(sum(map(int, num))) # 10
''' 1. 内置函数:map()函数 ———— 对于列表(或其他序列类型),对每个元素执行相同的操作
基本语法:map(func,seq1[,seq2,...])
第一个参数为函数,后面的参数为一个或多个可迭代序列,将func依次作用在序列seq1[,seq2,...]的每个元素(🔺 注意是每个元素!!!),得到一个新的可迭代序列(map对象)
1.1 当序列seq只有一个时,将函数func作用于这个seq的每个元素(🔺 注意是每个元素!!!)上,并得到一个新的可迭代序列
1.2 当序列seq有多个时,每个seq的同一位置的元素(🔺 注意是每个同一位置的元素!!!)同时传入多元的func函数,把得到的每一个返回值存放在一个新的可迭代序列中
2. 内置函数:sum()函数 ———— 对系列进行求和计算(🔺 注意是每个元素!!!)
基本语法:sum(iterable[, start])
iterable – 可迭代对象,如:列表、元组、集合
start – 指定相加的参数,如果没有设置这个值,默认为0
'''
# 例题2-2 编写程序,输入一个字符串,输出反转后的字符串(要求用内置函数实现)
s = input('2-2 请输入一个字符串:') # 1234
print(list(reversed(s))) # ['4', '3', '2', '1']
from functools import reduce
from operator import add
print(reduce(add, reversed(s))) # 4321
''' 3. 内置函数:reversed()函数 ———— 该方法返回一个逆序序列的迭代器(用于遍历该逆序序列)(🔺 一般用于列表逆序!!!)
基本语法:reversed(seq)
4. 内置函数:reduce()函数 ———— 对参数序列中元素进行累积
基本语法:reduce(func, seq[, initial])
initial – 可选,初始参数
注意:在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在functools模块里,使用需要通过引入functools模块来调用reduce函数
'''
# 例题2-3 编写程序,输入一个包含若干整数的列表,输出列表中的最大值
lst1 = input('2-3 请输入一个包含若干整数的列表:') # 123,124,5
print(list(lst1)) # ['1', '2', '3', ',','1', '2', '4', '5'] 🔺 input()的输出类型是str,所有变成单个元素了!!!
print(max(list(lst1)))
lst2 = eval(input('2-3 请输入一个包含若干整数的列表:')) # 123,124,5
print(max(lst2)) # 124
''' 5. 函数:eval()函数 ———— 用来执行一个字符串表达式,并返回表达式的值
基本语法:eval(expression[,globals[,locals]])
expression – 表达式
globals – 变量作用域(全局),如果被提供,必须是一个字典对象
locals – 变量作用域(局部、但会覆盖globals),如果被提供,可以说任何映射对象
▲ input()的输出类型是str,eval()函数好智能呀哈哈哈
'''
'''
s1 = input("请输入一个整数:")
print(type(s1)) # <class 'str'>
s2 = eval(input("请输入一个整数:"))
print(type(s2)) # <class 'int'>
'''
# 例题2-4 编写程序,输入包含若干整数的列表,把列表中所有的整数转换为字符串,然后输出包含这些字符串的列表
lst4 = eval(input('2-4 请输入一个包含若干整数的列表:'))
print(list(map(str, lst4)))
# 例题2-5 编写程序,输出一个包含若干任意数据的列表,输出该列表等价于True的元素组成的列表
lst5 = eval(input('2-5 请输入一个包含若干数据的列表:'))
print(list(filter(None, lst5))) # 🔺 非空即True
''' 6. filter()函数 ———— “过滤掉” ———— 用于过滤序列,即用函数func过滤掉iterable序列中不符合条件的元素,返回由符合条件的元素组成的新序列
基本语法:filter(func,iterable)
序列的每个元素作为参数传递给函数进行判断,最后将返回值为True的元素放到新序列(filter对象)中
'''
# 例题2-6 编写程序,输入一个包含若干整数的列表,输出一个新列表(奇数在前偶数在后,并且奇数之间的相对顺序不变、偶数之间的相对顺序也不变)
lst6 = eval(input('2-6 输入一个包含若干整数的列表:'))
newLst = sorted(lst6, key=lambda num: num % 2 == 0) # ▲ ▲ ▲
print(newLst)
''' 7. sorted()函数 ———— 对列表元素进行排序(新建一个列表作为返回值)
基本语法:sorted(iterable, key=None, reverse=False)
key – 指定一个函数(代表排序的规则),此函数在每次元素比较时被调用
reverse – 是否逆序,默认False升序排序
8. lambda ———— 定义一个匿名函数
基本语法:lambda [arg1[,arg2,.....argn]]: expression
'''
2.2 再来6道简单编程题吧!!!
# 练习内容:本章习题
# 编写者:LWW
# 开发时间:2022/5/12 20:33
# 编程题1:输入一个包含若干自然数的列表,输出这些自然数的平均值,结果保留三位小数
lst1 = eval(input('1. 请输入一个包含若干自然数的列表:')) # 1,2,3
avg = sum(lst1)/len(lst1)
print(round(avg, 3)) # 2.0 X有BUG
print("%.3f" % avg) # 2.000
from decimal import Decimal
print(Decimal(avg).quantize(Decimal("0.000"))) # 2.000
''' 1.round(x,n) ———— “舍入函数” ———— 将返回x的值,该值四舍五入到小数点后的n位数字
2.保留小数:
2.1 round()函数 - round(avg, 3)
2.2 格式化输出 - "%.3f" % avg
2.3 decimal函数 - Decimal(avg).quantize(Decimal("0.000"))
'''
# 编程题2:输入一个包含若干自然数的列表,输出这些自然数降序排列后的新列表
lst2 = eval(input('2. 请输入一个包含若干自然数的列表:')) # 1,2,3
print(sorted(lst2, reverse=True)) # [3, 2, 1]
# 编程题3:输入一个包含若干自然数的列表,输出一个新列表,新列表中每个元素为原列表中每个自然数的位数
# 🔺 map(len, seq)
lst3 = eval(input('3. 请输入一个包含若干自然数的列表:')) # 123,4,56,7
length = list(map(len, map(str, lst3))) # 🔺 🔺 🔺
print(length) # [3, 1, 2, 1]
# 编程题4:输入一个包含若干数字的列表,输出其中绝对值最大的数字
# 🔺 max(seq, key=abs)
lst4 = eval(input('4. 请输入一个包含若干数字的列表:')) # -9,8,7,-65,4,32
print(max(lst4, key=abs)) # -65
# 编程题5:输入一个包含若干整数的列表,输出这些整数的乘积
# 🔺 reduce()函数 ———— reduce(func, seq[, initial]) "元素累积"
lst5 = eval(input('5. 请输入一个包含若干整数的列表:')) # -9,8,7,-65,4,32
from operator import mul
from functools import reduce
print(reduce(mul, lst5)) # 4193280
# 或者用for循环也可以
p = 1
for i in lst5:
p = p*i
print(p)
# 编程题6:输入两个包含若干整数的等长列表,把这两个列表看作两个向量,输出这两个向量的内积
from operator import mul
lst6_1 = eval(input('6.1 请输入第一个包含若干整数的列表:')) # 1,2
lst6_2 = eval(input('6.2 请输入一个与第一个等长的包含若干整数的列表:')) # 1,2
print(sum(map(mul, lst6_1, lst6_2))) # 5
print(list(map(mul, lst6_1, lst6_2))) # [1, 4] 列表加运算
总结
The shoulders of teenagers should bear the grass the warblers and the breeze of the moon.