import sys # 输入 str1 = list(map(str,input().split())) # 输出 print(len(str1[-1]))
核心:map(str, input().split())
语法拆解
1. 基础语法拆解
map(str, input().split())
这个表达式由三个部分组成:
- input()获取用户输入的一行文本(返回类型是字符串),例如输入 1 a Bc 会得到字符串 "1 a Bc"
- .split()对输入的字符串进行分割,默认按空格分割,返回列表:
- map(str, ...)map() 函数对列表中的每个元素应用 str 转换。但这里有个细节:因为 input().split() 的结果已经是字符串列表,所以 map(str, ...) 实际上没有改变原有数据类型。如果改成 map(int, ...) 就有意义了,例如将字符串列表转为整数列表。
2. 典型应用场景
场景1:将输入转为整数列表
# 用户输入:10 20 30 nums = list(map(int, input().split())) print(nums) # 输出:[10, 20, 30]
场景2:处理混合类型输入
# 用户输入:5 apple 3.14 data = list(map(str, input().split())) # 强制转为字符串(实际无变化) print(data) # 输出:["5", "apple", "3.14"]
3. 关键注意事项
- 必须转换为列表才能查看结果map() 返回的是迭代器对象,需要 list() 显式转换:
- 分隔符的灵活性如果输入不是空格分隔,可以指定分隔符:
- 常见错误示例
4. 与列表推导式对比
map()
和列表推导式功能类似,但语法不同:
# map写法 nums = list(map(int, input().split())) # 列表推导式写法(更直观) nums = [int(x) for x in input().split()]
5. 完整示例演示
# 程序功能:输入多个数字求和 user_input = input("输入多个数字用空格分隔:") numbers = list(map(int, user_input.split())) total = sum(numbers) print(f"总和为:{total}") # 运行示例: # 输入:3 5 7 # 输出:总和为:15