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

如何基于指定索引参数与规则编写循环生成目标组合列表A?

问题:根据规则生成组合集合A

规则说明

  • 公式1:整数列表p,长度为6,索引按升序排列。
  • 公式2:整数列表c,长度为6,索引按升序排列。
  • 公式3:索引i除以2的余数为q,例如i=1时q=1,i=2时q=0;n=6时q集合为{1,0,1,0,1,0}。
  • 公式4:目标列表P的索引顺序为n,1,2,…,(n-1),n=6时索引为[6,1,2,3,4,5]。
  • 公式5-8:将目标列表P的索引与p、c的索引匹配,n=6时公式5不适用。
  • 公式9:A是P的可能组合集合,A的最大长度为奇数,n=6时A的长度可为3或5。

注:公式6-9的索引已通过生成storage_i列表及对应的q列表解决。

当前需解决的问题:编写代码实现公式6-9,根据storage_i中的索引从p和c中取值生成A。

预期输出

A = [[c_6, c_1, p_2], [c_6, c_1, p_3], ..., [c_3, p_4, c_5], [c_6, c_1, p_2, c_3, p_4], ...., [c_1, p_2, c_3, p_4, c_5]]
或
A = [[20,7,120], [20,7,3], ...,[80,50,9], [20,7,120,80,50], ...,[7,120,80,50,9]]

参数定义

import numpy as np

p = [100,120,3,50,200,90]
c = [7,100,80,220,9,20]

storage_i = [[6, 1, 2],
 [6, 1, 3],
 [6, 1, 4],
 [6, 1, 5],
 [6, 2, 3],
 [6, 2, 4],
 [6, 2, 5],
 [6, 3, 4],
 [6, 3, 5],
 [6, 4, 5],
 [1, 2, 3],
 [1, 2, 4],
 [1, 2, 5],
 [1, 3, 4],
 [1, 3, 5],
 [1, 4, 5],
 [2, 3, 4],
 [2, 3, 5],
 [2, 4, 5],
 [3, 4, 5],
 [6, 1, 2, 3, 4],
 [6, 1, 2, 3, 5],
 [6, 1, 2, 4, 5],
 [6, 1, 3, 4, 5],
 [6, 2, 3, 4, 5],
 [1, 2, 3, 4, 5]]

q = [[0, 1, 0],
 [0, 1, 1],
 [0, 1, 0],
 [0, 1, 1],
 [0, 0, 1],
 [0, 0, 0],
 [0, 0, 1],
 [0, 1, 0],
 [0, 1, 1],
 [0, 0, 1],
 [1, 0, 1],
 [1, 0, 0],
 [1, 0, 1],
 [1, 1, 0],
 [1, 1, 1],
 [1, 0, 1],
 [0, 1, 0],
 [0, 1, 1],
 [0, 0, 1],
 [1, 0, 1],
 [0, 1, 0, 1, 0],
 [0, 1, 0, 1, 1],
 [0, 1, 0, 0, 1],
 [0, 1, 1, 0, 1],
 [0, 0, 1, 0, 1],
 [1, 0, 1, 0, 1]]

取值示例(非Python索引)

示例1:

storage_i[1] = [6, 1, 2],q = [0, 1, 0],则:
A_cc = q[6]*p[6] + (1-q[6])*c[6] = 0*90 + (1-0)*20   = 20
A_c  = q[1]*p[1] + (1-q[1])*c[1] = 1*100 + (1-1)*7   = 100
A_cc = q[2]*c[2] + (1-q[2])*p[2] = 0*100 + (1-0)*120 = 120 

A = [A_cc,A_c,A_cc] = [20,100,120] 

示例2:

p = [100,120,3,50,200,90]
c = [7,100,80,220,9,20]

storage_i =  [1, 2, 3],q = [1, 0, 1],则:
A_cc = q[1]*c[1] + (1-q[1])*p[1] = 1*7 + (1-1)*100   = 7
A_c  = q[2]*p[2] + (1-q[2])*c[2] = 0*120 + (1-0)*100 = 100
A_cc = q[3]*c[3] + (1-q[3])*p[3] = 1*80 + (1-1)*3 = 80 

A = [A_cc,A_c,A_cc] = [7,100,80] 

当前未完成代码

storage_var_R5 = []

for set_i in storage_i:
    temp_var_R5 = []
    for idx_i in set_i:
        if idx_i ==n:
            A_cc = q[idx_i]*p[idx_i] + (1-q[idx_i])*c[idx_i]
        else:
            A_c = q[idx_i]*p[idx_i] + (1-q[idx_i])*c[idx_i]
            A_cc = q[idx_i]*c[idx_i] + (1-q[idx_i])*p[idx_i]
        temp_var_R5.append()

需补充逻辑,根据规则将对应值添加到列表中,完成A的生成。


内容的提问来源于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:55:16