@tomleslie And I prefer that it's shorter (and/or faster). I do not see any reason to use for sets or lists numelems instead of nops. You allude to a wider field of application of numelems in comparison with nops . But if we follow this logic, for example it's better to use `**` to raise to an exponent than `^` (because a single symbol `*` can be used for multiplication and exponentiation). Or the area of any plane figure should be calculated by integration (for example, the area of a rectangle than just multiplying its sides).
Even when working with matrices, I prefer other commands than numelems, because it is usually required to know not only the total number of entries in the matrix, but the number of rows and the number of columns. Here is an example:
m, n:=op(1, A);