如何实现每次从列表L取n个、列表M取1个元素按序返回
实现方案
你提供的两个列表长度刚好适配需求:M总长度为5,对应5次取值操作;L总长度为15,刚好等于1+2+3+4+5的和,不会出现元素不足或者剩余的情况。
核心逻辑:用指针记录L当前的取值位置,按指定的n值依次取对应数量的L元素,再取对应位置的M元素拼接即可。
代码实现(Python)
L = [4743, 20517, 13104, 14330, 18597, 13311, 946, 7696, 3357, 509, 10271, 17032, 512, 8859, 16265] M = [14925, 24993, 34483, 12033, 23966] l_ptr = 0 result = [] # 按顺序取n=1到n=5个L元素,同时对应取M的元素 for n, m_val in zip(range(1, 6), M): result.extend(L[l_ptr:l_ptr+n]) result.append(m_val) l_ptr += n # 逐行输出和示例格式一致的结果 for item in result: print(item)
输出验证
运行后前5行输出和你给出的示例完全匹配:
4743 14925 20517 13104 24993
如果需要自定义每次取的n值(无需固定1到5的顺序),只要保证自定义n列表的长度和M一致、所有n的总和和L的长度一致即可,示例如下:
# 自定义每次取的n值,可按需调整 n_list = [2,3,1,5,4] l_ptr = 0 result = [] for n, m_val in zip(n_list, M): result.extend(L[l_ptr:l_ptr+n]) result.append(m_val) l_ptr += n
内容的提问来源于stack exchange,提问作者Assassinos
相关产品推荐
相关产品推荐

