Как перевернуть несколько списков, используя Wolfram-Language - PullRequest
1 голос
/ 16 июня 2019

Я пытаюсь найти лучший способ решить вопрос:"Используйте Range, Reverse и Join для создания {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 списков вместо трех.

Заранее спасибо за помощь

Ответы [ 2 ]

1 голос
/ 23 июня 2019
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]
1 голос
/ 20 июня 2019

РАБОТА С КАЖДЫМ ЭЛЕМЕНТОМ СПИСКА ПО ФУНКЦИИ:

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

Выход:

результат -> список B: {3, 2, 1, 4, 3, 2, 1, 5, 4, 3, 2, 1}

...