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

如何按子表中每个元素出现的位置输出对应的表?例如:输入:s1={{a,b,c,d,e},{b,e,d,f},{g,d,b,g,a}};s2={{1,2,3},{4,2},... 如何按子表中每个元素出现的位置输出对应的表?
例如:
输入:
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}}}}}
展开
xingye_guang
2014-12-13 · 超过85用户采纳过TA的回答
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:113万
展开全部
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}};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式