我正在尝试找到解决问题的最佳方法:“使用范围,反向和联接来创建{3, 2, 1, 4, 3, 2, 1, 5, 4, 3, 2, 1}
”
所以基本上给定的列表是{1, 2, 3, 4, 5}, {1, 2, 3, 4}, {1, 2, 3}
。
我可以轻松地解决此问题,但想知道是否有比我想出的更好的方法(更有效)。
我的解决方案:
In[136]:= Join[ Reverse[Range[3]], Reverse[Range[4]], Reverse[Range[5]] ]
In[141]:= Reverse[Join[ Range[5], Range[4], Range[3] ]]
给出的列表:{1, 2, 3, 4, 5}, {1, 2, 3, 4}, {1, 2, 3}
,您必须在其中使用Range,Reverse和Join功能来创建预期的输出:
{3,2,1,4,3,2,1,5,4,3,2,1}
如果列表只有100个而不是三个,我的解决方案将不会有效。
感谢您的帮助
答案 0 :(得分:1)
通过功能运行列表的每个元素:
aggregate_mtcars
输出:
结果-> listB: listA = {}
Function[x, listA = Join[listA, x]] /@ {Range[5], Range[4], Range[3]}
listB = Reverse[listA]
Clear[listA]
答案 1 :(得分:1)
Range[#] & /* Reverse /@ {3, 4, 5} // Flatten
{3,2,1,4,3,2,1,5,4,3,2,1}
更新
有人投票删除了我的答案而没有提供理由。也许是因为它没有使用Join
。解决这个问题
Range[#] & /* Reverse /@ {3, 4, 5} // Apply[Join]