Skip to main content
5 of 5
added 2 characters in body; edited title
m_goldberg
  • 108.1k
  • 16
  • 104
  • 259

How do I extract the middle element(s) of a given list?

How do I extract the middle element(s) of a given list?

Here is some code that works, but seems a little too long:

extract[x_] := 
      Part[x, If[IntegerQ[#], {#}, {Floor[#], Ceiling[#]}] & @ Median[Range[Length @ x]]]

Here is another, shorter routine, but for a list of even length, it only gives one value, not two. I think two values would be better for even lists:

extract[x_] := Part[x, Quantile[Range[Length @ x], 1/2]]

So is there concise, efficient code that will return two elements for a list of even length?

HyperGroups
  • 8.6k
  • 1
  • 26
  • 63