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

Python如何将列表中的字符串赋值到表格指定位置以生成课程表

Python 课程表科目赋值实现方法

完全可以实现,核心思路是先定义课程表的二维结构,再给每个科目配置目标位置映射,即可把列表中的科目写入指定单元格,具体实现如下:

实现步骤

  • 先定义课程表的基础维度:时间段列表、星期列表,初始化一个对应维度的空二维列表作为课程表容器
  • 配置每个科目的目标位置坐标,坐标规则为(时间段索引, 星期索引),索引默认从0开始计数
  • 遍历位置映射,将科目写入二维列表的对应位置
  • 格式化输出为ASCII样式的表格

可运行代码示例

subjects_name = ['LAW', 'PHYSICS', 'MARKETING', 'ACCOUNTING', 'MULTIMEDIA']

# 定义课程表基础结构
time_slots = ['8-10am', '10-12am', '12-2Pm']
weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
# 初始化空课程表:3个时间段 × 5个星期,初始值为空字符串
timetable = [['' for _ in range(len(weekdays))] for _ in range(len(time_slots))]

# 配置科目对应位置:key为科目名,value为(时间段索引, 星期索引)列表,支持一个科目多个位置
subject_pos = {
    'LAW': [(0, 0), (1, 4)],
    'PHYSICS': [(1, 1)],
    'MARKETING': [(0, 2)],
    'ACCOUNTING': [(2, 0), (2, 3)],
    'MULTIMEDIA': [(0, 4), (1, 2)]
}

# 把科目写入对应位置
for sub in subjects_name:
    for pos in subject_pos.get(sub, []):
        row, col = pos
        timetable[row][col] = sub

# 格式化输出表格
# 先打印表头分隔线
separator = '+' + '-'*10 + ('+' + '-'*15)*len(weekdays) + '+'
print(separator)
# 打印表头行
header = '|' + ' '*10 + ''.join([f'|{day:^15}' for day in weekdays]) + '|'
print(header)
print(separator)
# 打印每行课程
for idx, slot in enumerate(time_slots):
    row = f'|{slot:^10}' + ''.join([f'|{course:^15}' for course in timetable[idx]]) + '|'
    print(row)
    print(separator)

可选优化

如果不想手动拼接表格格式,可以安装第三方库prettytable直接生成规范表格,只需把上面的输出部分替换为对应库的调用逻辑即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:06:04