当前位置: 首页 > news >正文

python中的map、split、join函数的作用 => ACM输入输出流

map(func,iter)

lst_str = ["1", "2", "3"]
# 得到lst_num为[1, 2, 3]
lst_num = list(map(int, lst_str))

如果想把一个列表里的所有元素批量地调用某一个函数,并映射得到一个新的列表(原列表中元素相对位置不变),可以使用内置函数map(func, iter)。
map(func, iter)的含义是,对可迭代对象iter(通常是一个列表)里的所有元素都调用函数func,并得到一个新的map对象。如果我们对map对象的外部再调用list(),则可以得到一个新的列表。
上述过程,是将lst_str = [“1”, “2”, “3”]中的每一个元素即str类型的"1"、“2”、"3"都调用了函数int(),转化为int类型的的1、2、3。
实际上等价于

lst_str = ["1", "2", "3"]
lst_num = list()
for ch in lst_str:lst_num.append(int(ch))
# 得到lst_num为[1, 2, 3]

split(x)

字符串中的split(x)方法以字符串x为分割符,将原字符串分割为一个新的列表并返回,原字符串不发生改变。如果不传入参数x,则默认为按照空格" “进行分割。最常用的分隔符为空格” “或者逗号”,"。

s = "1 2 3 4 5"
lst = s.split()
# 等价于lst = s.split(" ")s = "1,2,3,4,5"
lst = s.split(",")# 两种分割均会得到lst = ["1", "2", "3", "4", "5"]

join(lst)

字符串中的join(lst)方法以原字符串为合并符,将列表lst合并为一个新的字符串并返回。
注意lst中的元素必须是字符串。最常用的合并符为空字符串"“、空格字符串” “、逗号”,"。

lst = ["a", "b", "c"]
s = "".join(lst)
# 会得到s = "abc"s_space = " ".join(lst)
# 会得到s_space = "a b c"s_star = "*".join(lst)
# 会得到s_star = "a*b*c"

字符串的分割与合并是一对相互对应的操作,常用于列表与字符串之间的相互转换。
注意:

  1. 字符串属于一种不可变数据类型,并不能直接进行修改操作。当题目要求对一个字符串进行修改时,通常会先将原字符串使用split()方法或list()转化成列表,对列表修改后再使用join()方法得到新字符串的方式来实现。
  2. 列表lst必须是一个字符串类型列表,即lst: List[str]。如果lst是一个整数类型列表,直接使用语句"".join(lst)会出现类型错误TypeError。如需进行合并操作,必须使用map()内置函数对lst中的元素进行类型转换,将lst中的所有int类型元素转换成str类型。即
lst = [0, 4, 2]
s = "".join(list(map(str, lst)))    # 得到s = "042"

ACM输入输出流

在ACM模式中,我们通常会遇到用输入列表的情况,且列表中的各个元素用空格或者逗号隔开。
我们可以使用字符串的split()方法结合map()函数来实现输入。
输入字符串列表,可以这样写

# 输入形如"a b c"的字符串列表,用空格隔开
# 得到形如lst = ["a", "b", "c"]
lst = input().split()

输入数字列表,可以这样写

# 输入形如"1 2 3"的数字列表,用空格隔开
# input().split()会得到形如["1", "2", "3"]
# 得到形如lst = [1, 2, 3]
lst = list(map(int, input().split()))

在ACM模式中,列表的输出通常要求以字符串的形式输出,且用空格或逗号分隔开各个元素。
我们可以使用字符串的join()方法结合map()函数来实现输出。
输出字符串列表,可以这样写

# 输出形如"a b c"的字符串列表,用空格隔开
lst = ["a", "b", "c"]
ans = " ".join(lst)
print(ans)

输出数字列表,可以这样写

# 输出形如"1 2 3"的数字列表,用空格隔开
nums = [1, 2, 3]
ans = " ".join(list(map(str, nums)))
print(ans)
http://www.lryc.cn/news/490448.html

相关文章:

  • Ubuntu20.04下安装向日葵
  • 常用并发设计模式
  • Redis Search系列 - 第七讲 Windows(CygWin)编译Friso
  • 利用Docker容器技术部署发布web应用程序
  • [免费]SpringBoot+Vue毕业设计论文管理系统【论文+源码+SQL脚本】
  • BFS 算法专题(五):BFS 解决拓扑排序
  • 【Mysql】开窗聚合函数----SUM,AVG, MIN,MAX
  • java操作doc——java利用Aspose.Words操作Word文档并动态设置单元格合并
  • 探索 .NET 9 控制台应用中的 LiteDB 异步 CRUD 操作
  • 《进程隔离机制:C++多进程编程安全的坚固堡垒》
  • 构建无障碍的数字世界:深入探讨Web可访问性指南
  • 跨境出海安全:如何防止PayPal账户被风控?
  • 学习日记_20241123_聚类方法(MeanShift)
  • AI编程和AI绘画哪个更适合创业?
  • macOS 无法安装第三方app,启用任何来源的方法
  • 关于SpringBoot集成Kafka
  • 4.STM32之通信接口《精讲》之IIC通信---软件实现IIC《深入浅出》面试必备!
  • 6G通信技术对比5G有哪些不同?
  • 「Mac玩转仓颉内测版28」基础篇8 - 元组类型详解
  • WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理
  • 机械设计学习资料
  • Python 快速入门(上篇)❖ Python 字符串
  • Ubuntu中使用多版本的GCC
  • 1+X应急响应(网络)文件包含漏洞:
  • 机器学习实战记录(1)
  • PHP8解析php技术10个新特性
  • C++模版特化和偏特化
  • Simulink中Model模块的模型保护功能
  • Linux常用工具的使用(2):文本编辑器的使用
  • 【StarRocks】starrocks 3.2.12 【share-nothing】 多Be集群容器化部署