2

我试图找到解决问题的最佳方法: “使用范围、反向和连接来创建{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 个列表而不是 3 个,我的解决方案将不会有效。

在此先感谢您的帮助

4

2 回答 2

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]
于 2019-06-23T00:11:40.647 回答
1

通过函数运行列表的每个元素:

listA = {}
Function[x, listA = Join[listA,  x]] /@ {Range[5], Range[4], Range[3]}
listB = Reverse[listA]
Clear[listA]

输出:

结果-> listB: {3, 2, 1, 4, 3, 2, 1, 5, 4, 3, 2, 1}

于 2019-06-20T12:21:31.620 回答