如何实现按输入要求将字符串分配至对应编号的列表?
字符串分配到指定编号列表的实现
需求说明
需要从输入中读取两个数字:第一个是要创建的列表数量,第二个是待分配的字符串数量;随后将每个字符串分配到对应编号的列表中,最后按顺序输出每个列表的内容。
输入示例1:
3 3 # first 3 indicates how many lists and the second 3 indicates how many strings 1 Cat # assigning Cat to the first list 2 Dog # assigning Dog to the second list 3 Tiger # assigning Tiger to the third list
输出示例1:
[Cat] [Dog] [Tiger]
输入示例2:
3 4 # 3 indicates how many lists and 4 indicates how many strings 1 Cat # assigning Cat to first list 1 Lion # assigning Lion also to first list 2 Dog # assigning Dog to second list 3 Tiger # assigning Tiger to third list
输出示例2:
[Cat, Lion] [Dog] [Tiger]
原代码问题分析
你当前的代码仅创建了单个列表lst1(还被循环多次覆盖),没有存储所有需要的子列表,也未实现字符串的分配逻辑。
修正后的实现代码
# 读取第一行的两个数字 lst = input().split() list_count = int(lst[0]) string_count = int(lst[1]) # 创建指定数量的空列表,存入总列表中 lists = [[] for _ in range(list_count)] # 处理每一行的字符串分配 for _ in range(string_count): parts = input().split() # 输入编号从1开始,转成列表索引需减1 list_index = int(parts[0]) - 1 # 提取待分配的字符串(若含空格,改用' '.join(parts[1:])) target_str = parts[1] # 将字符串添加到对应列表 lists[list_index].append(target_str) # 按顺序输出每个列表 for sub_list in lists: print(sub_list)
关键逻辑说明
- 子列表集合创建:用
[[] for _ in range(list_count)]生成包含指定数量空列表的总列表,避免循环中覆盖单个列表的问题。 - 字符串分配:
- 拆分每行输入,提取列表编号和目标字符串;
- 把输入的1起始编号转换为0起始的列表索引;
- 使用
append()方法将字符串添加到对应子列表。
- 结果输出:遍历总列表,逐个打印每个子列表,格式符合需求。
扩展优化(可选)
如果待分配的字符串包含空格(例如1 My Little Cat),可将提取字符串的代码改为target_str = ' '.join(parts[1:]),确保完整获取带空格的字符串。
内容的提问来源于stack exchange,提问作者user20343843
相关产品推荐
相关产品推荐

