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

如何合并长度不同的列表?解决zip()函数无法复用短列表的问题

解决header_list长度不足时与data_list的配对问题

嘿,这个场景我太熟悉了!你用zip()失效是因为它只会以两个序列中较短的那个长度来生成配对,而你的data_list明显是多组重复的周期数据,刚好对应header_list的多次循环。下面给你两种靠谱的解决方案:

方案1:手动重复header_list(适用于数据长度是整数倍的情况)

既然你的data_list刚好是header_list长度的3倍(33个元素 vs 11个元素),我们可以直接把header_list重复对应次数,再和data_list配对:

header_list = ['1 mo', '3 mo', '6 mo', '1 yr', '2 yr', '3 yr', '5 yr', '7 yr', '10 yr', '20 yr', '30 yr']
data_list = [1.29, 1.44, 1.61, 1.83, 1.92, 2.01, 2.25, 2.38, 2.46, 2.64, 2.81, 1.29, 1.41, 1.59, 1.81, 1.94, 2.02, 2.25, 2.37, 2.44, 2.62, 2.78, 1.28, 1.41, 1.6, 1.82, 1.96, 2.05, 2.27, 2.38, 2.46, 2.62, 2.79]

# 计算需要重复的次数
repeat_count = len(data_list) // len(header_list)
# 重复header_list后与data_list配对
paired_result = list(zip(header_list * repeat_count, data_list))

# 输出验证
for item in paired_result:
    print(item)

运行后就能得到你想要的连续元组配对,每一组数据都会对应完整的header序列。

方案2:用itertools.cycle循环header(更灵活,适配任意数据长度)

如果以后你的data_list长度不是header_list的整数倍,推荐用itertools.cycle来循环迭代header序列,它会无限重复header_list,直到data_list耗尽:

from itertools import cycle

header_list = ['1 mo', '3 mo', '6 mo', '1 yr', '2 yr', '3 yr', '5 yr', '7 yr', '10 yr', '20 yr', '30 yr']
data_list = [1.29, 1.44, 1.61, 1.83, 1.92, 2.01, 2.25, 2.38, 2.46, 2.64, 2.81, 1.29, 1.41, 1.59, 1.81, 1.94, 2.02, 2.25, 2.37, 2.44, 2.62, 2.78, 1.28, 1.41, 1.6, 1.82, 1.96, 2.05, 2.27, 2.38, 2.46, 2.62, 2.79]

# 循环header_list与data_list配对
paired_result = list(zip(cycle(header_list), data_list))

# 输出验证
for item in paired_result:
    print(item)

这个方法不需要计算重复次数,不管data_list是33个还是34个元素,都能自动循环header来配对,实用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:48:55