首先讲解以下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=' ')
- '''
- 输出
- 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) # 返回一个迭代器:
- 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 rr7 n的长度是7,中间的空格也是这个字符串的一部分,是一个整体的字符串 '''
n=input('请输入身高:')#注意,因为input返回的是字符串,所以这个数字是字符串类型 name=input("请输入姓名:")#有提示性语句的输入 print(n,type(n),name) ''' 请输入身高:165 请输入姓名:zjx 输出:165zjx '''
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 输出:112ww '''
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'] '''
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]