Spaces:
Running
Running
# /// script | |
# requires-python = ">=3.10" | |
# dependencies = [ | |
# "marimo", | |
# ] | |
# /// | |
import marimo | |
__generated_with = "0.10.14" | |
app = marimo.App() | |
def _(): | |
import marimo as mo | |
return (mo,) | |
def _(mo): | |
mo.md( | |
""" | |
# π¦ Collections in Python | |
Explore Python's built-in collection types β the essential data structures! | |
## Lists | |
Lists are ordered, mutable sequences. Create them using square brackets: | |
```python | |
fruits = ["apple", "banana", "orange"] | |
numbers = [1, 2, 3, 4, 5] | |
mixed = [1, "hello", 3.14, True] # Can contain different types | |
``` | |
Below is an example list we'll use to explore operations. | |
""" | |
) | |
return | |
def _(): | |
sample_list = [1, 2, 3, 4, 5] | |
return (sample_list,) | |
def _(mo): | |
mo.md( | |
""" | |
## List Operations | |
Here are common operations you can perform on lists. | |
Try changing the values in `sample_list` above and watch the results change. | |
""" | |
) | |
return | |
def _(sample_list): | |
len(sample_list) # List length | |
return | |
def _(sample_list): | |
sample_list.append(6) # Add item to end | |
sample_list | |
return | |
def _(sample_list): | |
sample_list[0] # Access first element | |
return | |
def _(sample_list): | |
sample_list[-1] # Access last element | |
return | |
def _(mo): | |
mo.md( | |
""" | |
### Try marimo's Array Interface! | |
Explore how marimo handles arrays with this interactive element: | |
""" | |
) | |
return | |
def _(mo): | |
item = mo.ui.text(placeholder="Enter list item") | |
items = mo.ui.array([item] * 3, label="Create a list of 3 items") | |
return item, items | |
def _(items, mo): | |
mo.hstack( | |
[ | |
items, | |
mo.md(f"Your list: {items.value}") | |
], | |
justify="space-between" | |
) | |
return | |
def _(mo): | |
_text = mo.md(""" | |
- Try entering different types of items | |
- Watch how the list updates in real-time | |
This is a great way to experiment with list creation! | |
""") | |
mo.accordion({"π‘ Interactive List Builder Tips": _text}) | |
return | |
def _(mo): | |
mo.md( | |
""" | |
## Tuples | |
Tuples are immutable sequences. They're like lists that can't be changed after creation: | |
""" | |
) | |
return | |
def _(): | |
coordinates = (10, 20) | |
return (coordinates,) | |
def _(coordinates): | |
x, y = coordinates # Tuple unpacking | |
x | |
return x, y | |
def _(mo): | |
mo.md( | |
""" | |
## Dictionaries | |
Dictionaries store key-value pairs. They're perfect for mapping relationships: | |
""" | |
) | |
return | |
def _(): | |
person = { | |
"name": "John Doe", | |
"age": 25, | |
"city": "New York" | |
} | |
return (person,) | |
def _(person): | |
person["name"] # Access value by key | |
return | |
def _(person): | |
person.keys() # Get all keys | |
return | |
def _(person): | |
person.values() # Get all values | |
return | |
def _(mo): | |
mo.md( | |
""" | |
### Try marimo's Dictionary Interface! | |
Create your own dictionary using marimo's interactive elements: | |
""" | |
) | |
return | |
def _(mo): | |
key1 = mo.ui.text(placeholder="Key 1") | |
value1 = mo.ui.text(placeholder="Value 1") | |
key2 = mo.ui.text(placeholder="Key 2") | |
value2 = mo.ui.text(placeholder="Value 2") | |
dictionary = mo.ui.dictionary( | |
{ | |
"First key": key1, | |
"First value": value1, | |
"Second key": key2, | |
"Second value": value2, | |
} | |
) | |
return dictionary, key1, key2, value1, value2 | |
def _(dictionary, mo): | |
mo.hstack( | |
[ | |
dictionary, | |
mo.md(f"Your dictionary: {dictionary.value}") | |
], | |
justify="space-between" | |
) | |
return | |
def _(mo): | |
_text = mo.md("""Enter key-value pairs to build your dictionary | |
- Watch how the dictionary updates as you type | |
- Try different types of values | |
This interactive builder helps understand dictionary structure! | |
""") | |
mo.accordion({"π‘ Dictionary Builder Tips": _text}) | |
return | |
def _(mo): | |
mo.md( | |
""" | |
## Sets | |
Sets are unordered collections of unique elements: | |
""" | |
) | |
return | |
def _(): | |
numbers_set = {1, 2, 3, 3, 2, 1} # Duplicates are removed | |
return (numbers_set,) | |
def _(numbers_set): | |
numbers_set.add(4) # Add new element | |
numbers_set | |
return | |
def _(): | |
set1 = {1, 2, 3} | |
set2 = {3, 4, 5} | |
set1.intersection(set2) # Find common elements | |
return set1, set2 | |
def _(mo): | |
mo.md( | |
""" | |
## Collection Methods and Operations | |
Here are some common operations across collections: | |
```python | |
# Lists | |
my_list = [1, 2, 3] | |
my_list.insert(0, 0) # Insert at position | |
my_list.remove(2) # Remove first occurrence | |
my_list.sort() # Sort in place | |
sorted_list = sorted(my_list) # Return new sorted list | |
# Dictionaries | |
my_dict = {"a": 1} | |
my_dict.update({"b": 2}) # Add new key-value pairs | |
my_dict.get("c", "Not found") # Safe access with default | |
# Sets | |
set_a = {1, 2, 3} | |
set_b = {3, 4, 5} | |
set_a.union(set_b) # Combine sets | |
set_a.difference(set_b) # Elements in A but not in B | |
``` | |
""" | |
) | |
return | |
def _(mo): | |
callout_text = mo.md(""" | |
## Collection Mastery Awaits! | |
Next Steps: | |
- Practice list and dictionary comprehensions | |
- Experiment with nested collections | |
- Try combining different collection types | |
Keep organizing data! ποΈβ¨ | |
""") | |
mo.callout(callout_text, kind="success") | |
return (callout_text,) | |
if __name__ == "__main__": | |
app.run() | |