首先讲解以下map函数
一般用法为map(function,iterator)
意思是对可迭代对象iterator进行迭代使用function
对于返回类型,要么返回一个具有n个样本的可迭代容器,要么返回n个样本
def add(a):
a+=1
return a
b=[1,2]
c=map(add,b)#对b中每个元素进行add运算并返回一个迭代器
print(c,type(c))
for i in c:
print(i, end=' ')
'''
输出
<map object at 0x000001580381AEE0> <class 'map'>
2 3
'''
不仅可以返回迭代器,还可以这样写
def add(a):
a+=1
return a
b=[1,2]
c,d=map(add,b)#对b中每个元素进行add运算并返回一个迭代器
print(c,type(c),d,type(d))
现在进行复杂点的操作,如果function需要的参数不止一个呢?
我们来构造一个具有两个参数的函数add()来查看一下:
def add(a,b):
return a+b
a=(1,2)
b=(3,4)
c,d=map(add,a,b)#a,b对应位置的元素执行add函数
print(c,d)#输出4 6
aa=[1,2]
bb=[3,4]
cc,dd=map(add,aa,bb)
print(cc,dd)#输出4 6
在升级一下:
def add(a,b):
return a+b
a=(1,2,4)
b=(5,6,7)
c,d,e=map(add,a,b)#a,b对应位置的元素执行add函数
print(c,d,e)#输出6 8 11
aa=[1,2,4]
bb=[5,6,7]
cc,dd,ee=map(add,aa,bb)
print(cc,dd,ee)#输出6 8 11
lambda匿名函数以及将结果转为列表
def add(x):
return x**2 #计算x的平方
lists = range(11) #创建包含 0-10 的列表
a = map(add,lists) #计算 0-10 的平方,并映射
print(a) # 返回一个迭代器:<map object at 0x0000025574F68F70>
print(list(a)) # 使用 list() 转换为列表。结果为:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 使用lambda匿名函数的形式复现上面的代码会更简洁一些
print(list(map(lambda x:x**2,range(11)))) # 结果为:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
单行输入
n=input()#默认返回字符串,input输入返回的就是字符串 print(n,type(n),len(n)) ''' 输入:ww 2 rr 输出:ww 2 rr <class 'str'> 7 n的长度是7,中间的空格也是这个字符串的一部分,是一个整体的字符串 '''
n=input('请输入身高:')#注意,因为input返回的是字符串,所以这个数字是字符串类型 name=input("请输入姓名:")#有提示性语句的输入 print(n,type(n),name) ''' 请输入身高:165 请输入姓名:zjx 输出:165 <class 'str'> zjx '''
n=int(input())#将输入转换为整型.注意此时只能输入一个数 print(n) ''' 输入:1 2 3会报错 '''
'''如果一行中有多个数据的话, 则需要使用split()进行切割。split()切割后返回一个列表''' a = input().split() # split()默认以空格为分隔符 print(a) '''输入为: 1 2 3 4 5 a = ['1', '2', '3', '4', '5'],注意输出的每个为字符'''
b=int(input().split()) print(b) # 输入为:1,2,3,4,5 #会报错,input().split()返回的是一个列表 # 不能对整个列表使用int呀
b = input().split(',') # 以逗号为分隔符 # b = ['1', '2', '3', '4', '5']
多个输入
a = int(input()) # 单个转换 # 输入为:1 2 3 4 5 b = input().split() # b = ['1', '2', '3', '4', '5'] c = [int(i) for i in b] # 使用列表进行批量转换 c = [1, 2, 3, 4, 5] d = [int(i) for i in input().split()] # 当然可以一步倒位
a, b = input().split(" ")#输入以空格分隔 print(a,type(a),b) ''' 112 ww 输出:112 <class 'str'> ww '''
a,b,c=eval(input()) #输入三个值(任何类型)中间由逗号分隔,注意输入字符串,需要打单(或双)引号 print(a,b,c) ''' 1,'ww',2 输出:1 ww 2 '''
input().strip().split()input().strip().split(), strip()将输入的序列中首尾的空格去掉,split()方法可以将这个字符串,根据指定的字符分割,然后形成一个列表,比如这儿分割符就是空格。
n=input().strip().split() print(n,type(n)) ''' 12 w 3 ['12', 'w', '3'] <class 'list'> '''
map(int, input().strip().split())
这段代码的意思就是:将输入以空格作为分隔符,构成一个列表,然后遍历列表中每一个元素,每一个元素都用int函数处理一下
迭代器结果可以通过列表,元组,集合打印
a=map(int,input().split()) list(a) [12, 13]
a=map(int,input().split()) tuple(a) (12, 13)
a=map(int,input().split()) set(a) {12, 13}
c =list(map(eval, input().split())) #输入三个值(任何类型)中间(空格)分隔 #eval返回数据本身的类型 print(c) ''' 12 'r' 3 输出:[12, 'r', 3] '''
有多组输入数据,但没有具体的告诉你有多少组
while True:#多行输入,输入未指定个数的用例 try: a = [int(i) for i in input().split()] print(a[0] + a[1]) except: break
- 输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值
tcase=int(input().strip()) for case in range(tcase): a,b=map(int,input().strip().split())
- 有多组输入数据,没有具体的告诉你有多少组,但是题目却告诉你遇见什么结束
while True: a,b=map(aint,input().strip().split()) if a==0 and b==0: break
- 这次的输入实现输入一个整数,告诉我们有多少行,在输入每一行。对于每一行的输入,有划分为第一个数和其他的数,第一个数代表那一组数据一共有多少输入。
tcase = int(input().strip()) for case in range(tcase): data = list(map(int, input().strip().split())) n, array = data[0], data[1:] sum = 0 for i in range(n): sum += array[i]