Files
labs/Module-2/1.Basic/04-Lists.ipynb
T

481 lines
8.7 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Lists\n",
" \n",
" 1.) Creating lists\n",
" 2.) Indexing and Slicing Lists\n",
" 3.) Basic List Methods\n",
" 4.) Nesting Lists\n",
" 5.) Introduction to List Comprehensions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Assign a list to an variable named my_list\n",
"my_list = [1,2,3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We just created a list of integers, but lists can actually hold different object types. For example:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"my_list = ['A string',23,100.232,'o']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just like strings, the len() function will tell you how many items are in the sequence of the list."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"len(my_list)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Indexing and Slicing\n",
"Indexing and slicing work just like in strings. Let's make a new list to remind ourselves of how this works:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"my_list = ['one','two','three',4,5]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Grab element at index 0\n",
"my_list[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Grab index 1 and everything past it\n",
"my_list[1:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Grab everything UP TO index 3\n",
"my_list[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use + to concatenate lists, just like we did for strings."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"my_list + ['new item']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: This doesn't actually change the original list!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"my_list"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You would have to reassign the list to make the change permanent."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Reassign\n",
"my_list = my_list + ['add new item permanently']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"my_list"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use the * for a duplication method similar to strings:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Make the list double\n",
"my_list * 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Again doubling not permanent\n",
"my_list"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Basic List Methods\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Create a new list\n",
"list1 = [1,2,3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Use the **append** method to permanently add an item to the end of a list:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Append\n",
"list1.append('append me!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Show\n",
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Use **pop** to \"pop off\" an item from the list. By default pop takes off the last index, but you can also specify which index to pop off. Let's see an example:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Pop off the 0 indexed item\n",
"list1.pop(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Show\n",
"list1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Assign the popped element, remember default popped index is -1\n",
"popped_item = list1.pop()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"popped_item"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Show remaining list\n",
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It should also be noted that lists indexing will return an error if there is no element at that index. For example:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"list1[100]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the **sort** method and the **reverse** methods to also effect your lists:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"new_list = ['a','e','x','b','c']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Show\n",
"new_list"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Use reverse to reverse order (this is permanent!)\n",
"new_list.reverse()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"new_list"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Use sort to sort the list (in this case alphabetical order, but for numbers it will go ascending)\n",
"new_list.sort()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"new_list"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Nesting Lists"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Let's make three lists\n",
"lst_1=[1,2,3]\n",
"lst_2=[4,5,6]\n",
"lst_3=[7,8,9]\n",
"\n",
"# Make a list of lists to form a matrix\n",
"matrix = [lst_1,lst_2,lst_3]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Show\n",
"matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can again use indexing to grab elements, but now there are two levels for the index. The items in the matrix object, and then the items inside that list!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Grab first item in matrix object\n",
"matrix[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Grab first item of the first item in the matrix object\n",
"matrix[0][0]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}