500*_*500 3 design-patterns wolfram-mathematica
试着这样做:
list={{{33, 105, 203, 295}, {34, 106, 204, 296}},
{{21, 135, 201, 333}, {22,136, 202, 334}}}
Run Code Online (Sandbox Code Playgroud)
我想转换子列表,以便第一个:
{{33,105,203,295},{34,106,204,296}}
变
{{33,204,106,295},{34,106,105,296}}
我不明白以下我做错了什么:
list /. {{a_,b_,c_,d_}, {e_,f_,g_,h_}} :>
{{a_,g_,f_,d_}, {e_,c_,b_,h_}}
Run Code Online (Sandbox Code Playgroud)
编辑
感谢Leonid的评论,下面现在有效
list /. {{a_,b_,c_,d_}, {e_,f_,g_,h_}} :>
{{a,g,f,d}, {e,c,b,h}}
Run Code Online (Sandbox Code Playgroud)
如果有人知道更好的方法,不要犹豫.
正如列昂尼德所写,但拒绝发布作为答案,你的模式一旦纠正就会起作用:
list /. {{a_,b_,c_,d_}, {e_,f_,g_,h_}} :> {{a, g, f, d}, {e, c, b, h}}
Run Code Online (Sandbox Code Playgroud)
这是完成这项任务的最直接方式,但正如列昂尼德所写,它并不是最普遍的.这是另一种方式,诚然没有模式,你可能会接近这个:
orderBy[list_, order_] := Partition[Flatten[#][[order]], 4] & /@ list
orderBy[list, {1, 7, 6, 4, 5, 3, 2, 8}]
Run Code Online (Sandbox Code Playgroud)
这允许您将重新排序指定为简单的排列,可以手动编写或生成RandomeSample@Range@8
.
如果您的数据具有更多种形状,可以使用不同的Partition
参数等进行扩展.
归档时间: |
|
查看次数: |
158 次 |
最近记录: |