You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现按输入要求将字符串分配至对应编号的列表?

字符串分配到指定编号列表的实现

需求说明

需要从输入中读取两个数字:第一个是要创建的列表数量,第二个是待分配的字符串数量;随后将每个字符串分配到对应编号的列表中,最后按顺序输出每个列表的内容。

输入示例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)

关键逻辑说明

  1. 子列表集合创建:用[[] for _ in range(list_count)]生成包含指定数量空列表的总列表,避免循环中覆盖单个列表的问题。
  2. 字符串分配:
    • 拆分每行输入,提取列表编号和目标字符串;
    • 把输入的1起始编号转换为0起始的列表索引;
    • 使用append()方法将字符串添加到对应子列表。
  3. 结果输出:遍历总列表,逐个打印每个子列表,格式符合需求。

扩展优化(可选)

如果待分配的字符串包含空格(例如1 My Little Cat),可将提取字符串的代码改为target_str = ' '.join(parts[1:]),确保完整获取带空格的字符串。

内容的提问来源于stack exchange,提问作者user20343843

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:55:21