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

如何基于可变长度初始列表生成每两元素重复指定值的等长新列表

问题与解决方案

需求说明

给定长度可变的列表x(示例:x=[25,100,63,138,103,178,125,195...]),需要生成两个和x长度一致的列表y、y1,要求列表中每两个连续元素为同一指定数值,示例输出:

  • y=[140,140,138,138,140,140,138,138]
  • y1=[140,140,138,138,136,136,140,140]

Python实现方案

核心思路是按「每两个元素为一组」的规则,循环使用指定的数值序列填充,直到达到原列表的长度。

生成列表y

x = [25,100,63,138,103,178,125,195]
# 指定y要循环的数值序列
y_seq = [140, 138]
y = []
target_len = len(x)

# 循环生成每组两个相同元素
cycle_num = (target_len + 1) // 2
for i in range(cycle_num):
    current_val = y_seq[i % len(y_seq)]
    y.extend([current_val, current_val])

# 截断到和原列表一致的长度
y = y[:target_len]
print(y)  # 输出符合要求的列表y

生成列表y1

只需更换循环的数值序列即可:

# 指定y1要循环的数值序列
y1_seq = [140, 138, 136, 140]
y1 = []

cycle_num = (target_len + 1) // 2
for i in range(cycle_num):
    current_val = y1_seq[i % len(y1_seq)]
    y1.extend([current_val, current_val])

y1 = y1[:target_len]
print(y1)  # 输出符合要求的列表y1

通用封装函数

如果需要多次生成这类列表,可以封装成通用函数,复用性更强:

def make_paired_list(target_length, value_cycle):
    result = []
    cycle_count = (target_length + 1) // 2
    for i in range(cycle_count):
        val = value_cycle[i % len(value_cycle)]
        result.extend([val, val])
    return result[:target_length]

# 调用示例
x = [25,100,63,138,103,178,125,195]
y = make_paired_list(len(x), [140, 138])
y1 = make_paired_list(len(x), [140, 138, 136, 140])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:45:33