作业帮 > 数学 > 作业

Mathematica 如何按子表中每个元素出现的位置输出对应的表?

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/07/14 14:20:09
Mathematica 如何按子表中每个元素出现的位置输出对应的表?
如何按子表中每个元素出现的位置输出对应的表?
例如:
输入:
s1={{a,b,c,d,e},{b,e,d,f},{g,d,b,g,a}};
s2={{1,2,3},{4,2},{{3}}};
输出:
s3={{{{{a,b,c},{d,b},{{c}}}},{{{b,e,d},{f,e}},{{d}}}},{{{g,d,b},{g,d}},{{b}}}}}
说明:(1) s2是任意形式任意层的数值列表;
(2) s2中每个数表示s1每个子表中某个元素的序列位置,即s2中的每个数值ki表示s1中每个子表的第ki个元素.例如s1中的1表示s1中第一个子表中的第1个元素a,也表示第二个子表中的第1个元素b,也表示第三个子表中的第1个元素g,其余类推;
(3) s3是按s2的列表式,对s1中每个子表输出一个对应表来.
(4) 其中s2中的最大值不大于s1中最小子表元素的个数
上面书写有一处笔误,s3应该是:
s3={{{{a,b,c},{d,b},{{c}}}},{{{b,e,d},{f,e}},{{d}}}},{{{g,d,b},{g,d}},{{b}}}}}
Mathematica 如何按子表中每个元素出现的位置输出对应的表?
s3=Table[s1[[x,s2[[y]]]],{x,1,Length@s1},{y,1,Length@s2}]
再问: xingye_guang:你好!经检验出不来哦, 谢谢!
再答: s2={{1,2,3},{4,2},{{3}}};
你的s2有问题,改为: s2={{1,2,3},{4,2},{3}};
再问: 照你这样改了就只有2层了,而我需要的是任多意层表的替换关系,如
s2={{1,2,3},{4,2},{{3}}}或s2={{1,2,3},{4,2},{{3},{1,2,3}}}都是允许的,谢谢!
再答: s3 = Table[
s1[[x, s2[[y]] // Flatten]], {x, 1, Length@s1}, {y, 1, Length@s2}]
不好意思,完全按照你要求的s3我做不出来