Category:LSL List
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
A list is a special kind of data type which can contain zero or more elements.
Lists are signified by square brackets surrounding their elements, which are separated by commas.
Examples:
[0,1,2,3,4] ["Yes","No","Perhaps"]
Diverse Data Types
Not all elements in a list need to be the same type of element. In the same list, you can store strings, integers, floats, vectors, etc, right side by side.
Example:
[1,14.154,"Isn't this fun?",<0,0,0>]
However, a list may not contain another list (i.e. you can't nest them.)
[1, "one", 2, "two"] + [3, "three"] returns [1, "one", 2, "two", 3, "three"] not [1, "one", 2, "two", [3, "three"]]
Counting place in a list vs list length
It's important at the outset to note the following (which can trip up even experienced minds when they are battle-weary):
["Yes","No","Perhaps"]
The length of this list is 3, because it has 3 elements in it.
BUT, counting to determine an element's place in its list (aka "indexing") starts at 0 -- NOT 1.
The position of "Yes" in the above list is 0, "No" is at position 1, and "Perhaps" is at position 2.
Consequently, if you have 7 elements in a list, the last item in the list will be at position 6.
List Limits
While a script is running, a list can grow dynamically as large as needed, limited only by the amount of memory that is available in the script.
However, at compile (aka save) time, there is a 72 element limit to pre-defined lists hardcoded in the script. Such long, predefined lists are common, for example, when someone is offering the user a plethora of colour choices.
Tip! If you really need 72 or more such choices in a pre-defined list, just make 2 (or more) lists that don't upset the compiler, and join them together in state_entry() or wherever appropriate:
biggerlist = biglist01 + biglist02;
To access the individual elements use the llList2<type> functions.
Extended List Operations
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.
function | purpose |
---|---|
ListItemDelete | Removes one element from a list. |
ListStridedUpdate | Updates part of a strided list. |
ListToWholeNumbers | Given a list of floats, converts them all to whole numbers (aka integers.) |
ListXorY | Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list. |
ListXandY | This function examines two lists, and returns a new list composed of the elements that both lists have in common. |
ListXnotY | Show what x list has that y list is missing. |
ListXxorY | Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. |
ListXequY | Answers the question: is list X identical to list Y? |
ListXneqY | Answers the question: is list X different from list Y? |
Replace | Replaces a single occurrence of something in a list with something else that you specify. |
Replace All | Replaces all occurrences of 'from list' with those in 'to list' in 'src list'. Not as concise as the replace function above, but will handle multiple items at the same time. |
ListUnique | Given a list of elements, returns a list of only the unique individual elements in that list. |
Subcategories
This category has the following 5 subcategories, out of 5 total.
Pages in category "LSL List"
The following 31 pages are in this category, out of 31 total.