7
$\begingroup$

I use the function Drop quite often. When looking at this question, my attention was caught by a use of Drop in a way I did not see before. So I read the documentation and found the following description:

Drop[list,{m,n,s}] gives list with elements m through n in steps of s dropped.

As I read it, this formulation suggests that the list is partioned in sublists of length s and that in each of these sublists the elements m through n are dropped.

Drop[Range[10], {2,3,5}] => {1,3,4,5,6,7,8,9,10} 

I expected that the elements 2, 3, 7 and 8 would be dropped. It is only element 2 that is dropped. I get the same result when I replace the number 3 (n) with any number between 2 and 10. So with these values, m through n seems to result in only m for the original list.

In the next command I indeed see some periodictity with respect to s:

Drop[Range[10], {3,-1, 5}] => {1, 2, 4, 5, 6, 7, 9, 10} 

But I fail to see why elements 3 to -1 in steps of 5 results in 3 and 8. I get the same result when I replace -1 with -2 or -3.

Finally:

Drop[Range[10], {5,-1, 5}] => {1,2,3,4,6,7,8,9,10} 

Here elements 5 and 10 are dropped. But:

Drop[Range[10], {5,-2, 5}] => {1,2,3,4,6,7,8,9,10} 

Now only element 5 is dropped.

Can someone give me a better understanding how I can predict the result of Drop, when used with a list {m, n, s}?

$\endgroup$
1
  • 1
    $\begingroup$ Another way to write it: For m < n (and s > 0 by necessity), Drop[list, {m, n, s}] drops m + s*i for all s such that m + s*i <= n. If n > m we must have that s < 0 and it will drop m + s*i for all s such that m + s*i >= n. $\endgroup$ Commented Mar 14, 2017 at 11:59

1 Answer 1

8
$\begingroup$

It works analogously to Span:

list = Range[10]; spec = 3 ;; -1 ;; 5; MapAt[Style[#, Red] &, list, spec] list[[spec]] Drop[list, spec] Drop[list, List @@ spec] (*your case*) 

enter image description here

$\endgroup$
2
  • 1
    $\begingroup$ @C. E. Thanks, that makes it clear. In the documentation, 'elements m through n in steps of s', the steps refer only to m, not to n. Now and then it is a disadvantage being a mathematician. $\endgroup$ Commented Mar 14, 2017 at 12:51
  • 1
    $\begingroup$ there are negative m,n examples in the docs if you drill down to scope. $\endgroup$ Commented Mar 14, 2017 at 16:02

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.