gpt4 book ai didi

wolfram-mathematica - mathematica 中的两个列表操作

转载 作者:行者123 更新时间:2023-12-04 08:04:20 25 4
gpt4 key购买 nike

我有两个列表操作需要帮助。我实现它们的方式不是很优雅,所以我想向各位专家学习。

1)假设我有两个列表,一个是 {{0,2,4},{1,3,2},{2,0,4}} ,另一个是 {{1,3,7},{2,4,6},{3,1,9}} 。我想要么基于值,要么基于某种标准来过滤第一个列表,然后在第二个列表中获取相应的元素。例如,基于非零值,我想获得 {{3,7},{2,4,6},{3,9}} 。基于大于 2 的条件,我想获得 {{7},{4},{9}}

2)我有一个列表,例如 {{{1,2},{1,1}},{{1,3},{2,4}},{{1,2},{2,3}},{{1,4},{3,3}}} 。我想形成 {{{1,2},{{1,1},{2,3}}},{{1,3},{{2,4}}},{{1,4},{{3,3}}} 。也就是说,如果第一个元素相同,我想对第二个列表进行分组。我怎样才能以美丽的方式做到这一点?

非常感谢。

最佳答案

对于第一部分,您需要 Pick :

In[27]:= Pick[{{1,3,7},{2,4,6},{3,1,9}},{{0,2,4},{1,3,2},{2,0,4}},_?Positive]
Out[27]= {{3,7},{2,4,6},{3,9}}

In[28]:= Pick[{{1,3,7},{2,4,6},{3,1,9}},{{0,2,4},{1,3,2},{2,0,4}},_?(#>2&)]
Out[28]= {{7},{4},{9}}

对于第二个问题, GatherBy 可以帮您解决大部分问题:
In[29]:= x = GatherBy[{{{1, 2}, {1, 1}}, {{1, 3}, {2, 4}}, {{1, 2}, 
{2, 3}}, {{1, 4}, {3, 3}}}, First]

Out[29]= {{{{1, 2}, {1, 1}}, {{1, 2}, {2, 3}}}, {{{1, 3},
{2, 4}}}, {{{1, 4}, {3, 3}}}}

然后你可以应用一个规则来清理一下:
In[30]:= x /. l:{{a_, _}..} :> {a, Last /@ l}

Out[30]= {{{1, 2}, {{1, 1}, {2, 3}}}, {{1, 3}, {{2, 4}}},
{{1, 4}, {{3, 3}}}}

关于wolfram-mathematica - mathematica 中的两个列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5241842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com