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

如何用Python生成交替间隔的奇数长度数字列表组合并存储?

Python实现交替生成奇数长度列表并存储的需求

问题描述

给定两个数字列表:

A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
B = [101, 102, 103, 104, 105, 106, 107, 108, 109, 200]

需要按以下规则生成并存储列表:

  1. 生成X和Y两个列表,它们的长度始终为奇数(3、5……),直到原列表长度n(此处n=10)之前的最后一个奇数(即9)。
  2. X的元素规则:[A[0], B[1], A[2], ..., A[奇数索引]](Python为0索引,对应描述中的A₁、B₂等)
  3. Y的元素规则:[B[0], A[1], B[2], ..., B[奇数索引]]
  4. 将不同长度的X依次存入storage_X,不同长度的Y依次存入storage_Y,示例如下:
    storage_X = [[1, 102, 3], [1, 102, 3, 104, 5], ..., [长度为9的X列表]]
    storage_Y = [[101, 2, 103], [101, 2, 103, 4, 105], ..., [长度为9的Y列表]]
    

实现代码

A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
B = [101, 102, 103, 104, 105, 106, 107, 108, 109, 200]

# 确定目标奇数长度范围:从3开始到小于n的最大奇数
n = len(A)
max_odd = n - 1 if n % 2 == 0 else n - 2
target_lengths = range(3, max_odd + 1, 2)

storage_X = []
storage_Y = []

for length in target_lengths:
    # 生成当前长度的X列表
    current_x = []
    for idx in range(length):
        current_x.append(A[idx] if idx % 2 == 0 else B[idx])
    storage_X.append(current_x)
    
    # 生成当前长度的Y列表
    current_y = []
    for idx in range(length):
        current_y.append(B[idx] if idx % 2 == 0 else A[idx])
    storage_Y.append(current_y)

# 打印验证结果
print("storage_X:")
for x in storage_X:
    print(f"{x}  len={len(x)}")

print("\nstorage_Y:")
for y in storage_Y:
    print(f"{y}  len={len(y)}")

逻辑说明

  1. 确定长度范围:先获取原列表长度n,计算出需要生成的最大奇数长度(若n为偶数则取n-1,奇数则取n-2),再用range生成从3开始的所有目标奇数长度。
  2. 生成单个列表:遍历每个目标长度,对每个位置索引判断奇偶:
    • X列表:偶数索引(对应描述中的第1、3、5...位)取A的元素,奇数索引取B的元素。
    • Y列表:偶数索引取B的元素,奇数索引取A的元素。
  3. 存储结果:将每个生成的X、Y列表分别追加到对应的存储列表中。

运行代码后,会输出符合要求的存储列表,子列表长度依次为3、5、7、9。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:36:00