Python一行输入多个数字用空格隔开(洛谷B2001入门测试题目)(map函数和split函数)
Posted on 2022-03-25 15:16 qnhnt 阅读(342) 评论(0) 编辑 收藏 举报 来源map(int, input().split):接收输入的字符串,以空格为分隔符,将分隔的数据存入列表,将列表中的数据转存入另一个空列表中,转存时将字符串转化为整型。
- 比如:实现一行输入两个整数,然后求整数的和,以空格隔开:
- 但其实直接用.split()即可,但是这样这里面保存的是字符串
a, b = map(int, input().split()) c = a+b print(c)
- 输入多个单词则是改变int为str。如果要以逗号隔开,则改变split()为split(',')
- 其中,split函数和map函数的作用:
- split函数:将一个字符串通过指定分隔符来分裂成多个字符串,并以列表的形式返回。
- 语法格式:str.split(str = "", num = string.count(str))[n]
- 参数:str:分隔符,默认为空格,不能为空(''),如果字符串中没有分隔符,就把整个字符串作为列表的一个元素;num:分割次数,若不存在num,并且字符串中存在分隔符,那么就全分割掉了,下面有例子;若存在num,则分割成num+1个字符串,每一个字符串可以赋予给新的变量,比如分割0次,就是分割成0+1个字符串,也就是一整个;[n]:表示选取第n个切片
#1.这是默认分隔符,就啥也没有,但a字符串中各个字符分隔用的是空格,就会分隔掉,因为str默认是空格 a = '1 2 3 4' print(a.split())#==>['1', '2', '3', '4'] #2.str以'.'为分隔符,num没有值,那么就全分隔掉了 a = '1.2.3.4' print(a.split('.'))#==>['1', '2', '3', '4'] #3.str还是以'.'为分隔符,但此时num有值为0,而0+1次是分隔成一个字符串,所以就没有分隔 a = '1.2.3.4' print(a.split('.',0))#==>['1.2.3.4'] #4.num为1,分隔1次,分隔成1+1=2个字符串 a = '1.2.3.4' print(a.split('.',1))#==>['1', '2.3.4'] #4.num为2,分隔2次,分隔成1+2=3个字符串 a = '1.2.3.4' print(a.split('.',2))#==>['1', '2', '3.4'] #4.num为2,分隔2次,分隔成3个字符串,[1]取序列为1的切片 a = '1.2.3.4' print(a.split('.',2)[1])#==>2 #分隔2次,把分隔后的三个切片保存到三个变量里 a = '1.2.3.4' a1, a2, a3 = a.split('.',2)#==>1 #2 #3.4 print(a1) print(a2) print(a3)
其实num也可以这么理解,如果num的值为1,那么遇到一个分隔符就分隔一次,那么其实就是等于分隔成了两个子字符串;如果num的值为2,那么就遇到两个分隔符分隔两次,等于分隔成了三个子字符串。
split函数切片后是相当于创建了一个副本,然后在这个副本里操作,不会改变原先的字符串
- map函数:将func应用于iterables的每一个元素,返回的是一个map对象,需要list(map(func, iter))来将映射后的map对象转换成列表(可以是元组tuple(map())),map函数不改变原有的list,而是返回一个新的list。
- 格式:map(func, *iterables, ...)
- 参数:第一个参数是接收一个函数,第二个参数是接收一个或者多个可迭代的序列,省略号代表可以传多个
#定义一个数列和一个方法 list1 = [1,2,3,4] def f(x): return x+1 i = map(f, list1)#把函数f传入参数一,把list传入参数二(除了可以是列表也可以是元组等等)然后使用map函数把值赋值给i print(list(i))#==>[2, 3, 4, 5]用list输出i,除了是可以用list也可以用元组
- 也可以用lambda匿名函数:lambda函数省去了函数名称的作用,lambda的冒号前是参数,冒号后是返回值
list1 = [1,2,3,4] list2 = [5,4,3,2] print(list(map(lambda x,y:x+y, list1, list2)))#==>[6, 6, 6, 6]