Как получить странно проиндексированные элементы в списке в Mathematica - PullRequest
7 голосов
/ 27 января 2011

Как получить странно проиндексированные элементы в списке? Я думаю о Select, но не нашел ничего, возвращающего позицию элемента, особенно учитывая, что в списке есть повторяющиеся элементы.

Кроме того, как вообще выбрать те элементы, индексы которых удовлетворяют некоторым определенным условиям?

Ответы [ 3 ]

13 голосов
/ 27 января 2011

Вот еще несколько в дополнение к @ belisarius's answer , которые не требуют вычислений Length[lis]:

Take[lis, {1, -1, 2}]

lis[[1 ;; -1 ;; 2]]

Вы часто можете использовать -1 для представленияПоследняя позиция.

12 голосов
/ 27 января 2011

Есть много способов, вот некоторые из них:

In[2]:= a = Range[10];le = Length@a;

In[3]:= Table[a[[i]], {i, 1, le, 2}]

In[5]:= Pick[a, Table[Mod[i, 2], {i, 1, le}], 1]

In[6]:= a[[1 ;; le ;; 2]]

В общем, с помощью Pick [] (в качестве примера) вы можете смоделировать любую мыслимую индексную маску.

6 голосов
/ 21 декабря 2011

По какой-то причине краткая форма Span была опущена в ответах.

Range[20][[;;;;2]]
{1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

Цитирование документации :

;;;;k 
from the beginning to the end in steps of k.  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...