Python一行输入多个数字用空格隔开(洛谷B2001入门测试题目)(map函数和split函数)

 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]

  • 10
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值