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

Python遍历双列表生成目标列表出错,求正确实现方案

问题分析

你的问题出在错误地用位置配对了current_week和late_pcs——late_pcs的元素是和late_week里的周数一一对应(45对应10,46对应27),而非和current_week的位置直接绑定。用zip_longest遍历会让前3个周(42、43、44)和late_pcs的前2个元素(10、27)配对,剩下的两个周(45、46)只能拿到None,这就是你得到[0,0,0,None,None]的原因。

正确实现方式

最直观高效的做法是先把late_week和late_pcs转换成映射字典,这样可以通过周数快速找到对应的pcs值,再遍历current_week生成目标列表:

current_week = [42,43,44,45,46]
late_pcs = [10,27]
late_week = [45,46]

# 建立周数和pcs的映射字典
late_map = dict(zip(late_week, late_pcs))
# 遍历current_week生成结果
late_list = [late_map.get(week, 0) for week in current_week]

print(late_list)  # 输出: [0, 0, 0, 10, 27]

解释:

  • dict(zip(late_week, late_pcs))会生成字典{45:10, 46:27},把周数和对应的pcs值绑定。
  • 列表推导式里用late_map.get(week, 0):如果week在字典中存在,就取对应的值;否则返回默认值0,完美匹配你的需求。

如果不想用字典,也可以用循环加条件判断实现(效率稍低,适合小列表):

current_week = [42,43,44,45,46]
late_pcs = [10,27]
late_week = [45,46]

late_list = []
for week in current_week:
    if week in late_week:
        # 找到当前周在late_week中的索引,再取对应的late_pcs值
        idx = late_week.index(week)
        late_list.append(late_pcs[idx])
    else:
        late_list.append(0)

print(late_list)  # 输出: [0, 0, 0, 10, 27]

这种方法每次都要调用late_week.index(week),时间复杂度是O(n),如果late_week很长的话,推荐用第一种字典的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:48:13