10-08-2016, 09:37 PM

Hello,

The hpprime provide already many usefull list functions, mostly for math,

But I'm sharing with you my libList v1 that provide some basic list functions for programming.

[attachment=4022] see next post for version 2.

API list : L_GET, L_SET, L_INS, L_DEL, L_MAP, ARR2LST and LST2VECT

L_INS(lst,pos,item)

Insert an item to a list. Retruns the new list

if pos is null, insert at the end

if pos<0, count -pos from right to insert at

ex :

L_SET(lst,pos,item)

Set (change) an item from a list. Retruns the new list.

note : it does not add item, list size does not increase

if pos is null, change the last item

if pos<0, count -pos from right to change

ex :

L_DEL(lst,pos)

Remove an item from a list. Returns the new list

if pos is null, remove the last item

if pos<0, remove by counting -pos from the right

ex :

L_GET(lst,pos)

Get an item from a list. Returns the item

if pos is null, get last item

if pos<0, count -pos from right

if pos exceed list size, return last

ex :

L_MAP(lst,userfunction)

Call a function on each list item. Returns the list of function returns

ex :

ARR2LST(array)

Convert vector or matrix to list

resulting list have embeded lists in case of matrix

ex :

LST2VECT(lst)

Convert a simple list to a vector

note : list items must be numbers

ex :

The hpprime provide already many usefull list functions, mostly for math,

But I'm sharing with you my libList v1 that provide some basic list functions for programming.

[attachment=4022] see next post for version 2.

API list : L_GET, L_SET, L_INS, L_DEL, L_MAP, ARR2LST and LST2VECT

L_INS(lst,pos,item)

Insert an item to a list. Retruns the new list

if pos is null, insert at the end

if pos<0, count -pos from right to insert at

ex :

Code:

`L_INS({11,22,33},1, 99); // returns {99,11,22,33}`

L_INS({11,22,33},0,99); // returns {11,22,33,99}

L_INS({11,22,33},-1,99); // returns {11,22,99,33}

L_INS({1,2,3},2,{7}); // returns {1,{7},2,3} -- insert any kind of object

L_SET(lst,pos,item)

Set (change) an item from a list. Retruns the new list.

note : it does not add item, list size does not increase

if pos is null, change the last item

if pos<0, count -pos from right to change

ex :

Code:

`L_SET({11,22,33},1, 99); // returns {99,22,33}`

L_SET({11,22,33},0,99); // returns {11,22,99}

L_SET({11,22,33},-1,99); // returns {11,99,33}

L_SET({1,2,3},2,{7}); // returns {1,{7},3}

L_DEL(lst,pos)

Remove an item from a list. Returns the new list

if pos is null, remove the last item

if pos<0, remove by counting -pos from the right

ex :

Code:

`L_DEL({11,22,33},1); // returns {22,33}`

L_DEL({11,22,33},0); // returns {11,22}

L_DEL({11,22,33},-1); // returns {11,33}

L_GET(lst,pos)

Get an item from a list. Returns the item

if pos is null, get last item

if pos<0, count -pos from right

if pos exceed list size, return last

ex :

Code:

`L_GET({11,22,33,44},2); // returns 22`

L_GET({11,22,33,44},0); // returns 44

L_GET({11,22,33,44},-1); // returns 33

L_MAP(lst,userfunction)

Call a function on each list item. Returns the list of function returns

ex :

Code:

`EXPORT myfct(a) // a userfunction`

RETURN a*2;

END;

L_MAP({1,2,3},"myfct"); // returns {2,4,6}

ARR2LST(array)

Convert vector or matrix to list

resulting list have embeded lists in case of matrix

ex :

Code:

`ARR2LST([1,2,3]); // returns {1,2,3}`

ARR2LST([[1,2,3]]); // returns {{1,2,3}}

ARR2LST([[1,2][3,4]]); // returns {{1,2},{3,4}}

LST2VECT(lst)

Convert a simple list to a vector

note : list items must be numbers

ex :

Code:

`LST2VECT({1,2,3}); // returns [1,2,3]`