Autosave: 2023-02-15 07:36:48
This commit is contained in:
parent
08764b0c3a
commit
4b34232081
5 changed files with 241 additions and 29 deletions
|
@ -15,3 +15,145 @@ Lists have the following properties:
|
|||
- They **allow duplicate** members
|
||||
- They are **indexed**
|
||||
- You can increase/decrease their length by adding/removing new members
|
||||
|
||||
> Lists are denoted with `[...]`
|
||||
|
||||
## Basic usage
|
||||
|
||||
```python
|
||||
# Defining a list
|
||||
list1 = ['John', 'Paul', 'George', 'Ringo']
|
||||
list2 = [4]
|
||||
|
||||
# Empty list
|
||||
list3 = [] # empty list
|
||||
list3 = list() # Also empty list
|
||||
|
||||
# Nested list
|
||||
list5 = [[2, 3], [6, 8]]
|
||||
```
|
||||
|
||||
## Slicing
|
||||
|
||||
```python
|
||||
list1 = ['John', 'Paul', 'George', 'Ringo']
|
||||
|
||||
print(list1[1])
|
||||
print(list1[-1])
|
||||
print(list1[1:3])
|
||||
print(list1[:3])
|
||||
print(list1[1:])
|
||||
|
||||
"""
|
||||
Ringo
|
||||
['Paul', 'George']
|
||||
['John', 'Paul', 'George']
|
||||
['Paul', 'George', 'Ringo']
|
||||
"""
|
||||
```
|
||||
|
||||
## Adding additional values to existing list
|
||||
|
||||
```python
|
||||
list1 = ['John', 'Paul', 'George', 'Ringo']
|
||||
|
||||
# Add single element to the end of a list
|
||||
list1.append('Pete')
|
||||
# ['John', 'Paul', 'George', 'Ringo', 'Pete']
|
||||
|
||||
# Add multiple elements to end of a list
|
||||
list1.extend(['Albert', 'Bob'])
|
||||
list1 += ['Ginger', 'Sporty']
|
||||
# ['John', 'Paul', 'George', 'Ringo', 'Pete', 'Albert', 'Bob', 'Ginger', 'Sporty']
|
||||
|
||||
## Insert at specific index
|
||||
list1.insert(2, 7)
|
||||
['John', 'Paul', 7, 'George', 'Ringo', 'Pete', 'Albert', 'Bob', 'Ginger', 'Sporty']
|
||||
|
||||
a_list = ['Adele', 'Madonna', 'Cher']
|
||||
print(a_list)
|
||||
a_list.insert(1, 'Paloma')
|
||||
print(a_list)
|
||||
# ['Adele', 'Paloma', 'Madonna', 'Cher']
|
||||
|
||||
```
|
||||
|
||||
## Removing elements
|
||||
|
||||
We distinguish `del` from `remove` when removing elements from lists:
|
||||
|
||||
- `del` requires an index value
|
||||
- `remove` requires a value reference (i.e. the mame of the element rather than its index)
|
||||
|
||||
`del` is simple deletion whereas `remove` searches the list. Therefore `del` is more efficient.
|
||||
|
||||
```python
|
||||
# Remove and return element removed
|
||||
list6 = ['Once', 'Upon', 'a', 'Time']
|
||||
print(list6.pop(2))
|
||||
# a
|
||||
|
||||
# Remove and return last element
|
||||
list6 = ['Once', 'Upon', 'a', 'Time']
|
||||
print(list6.pop())
|
||||
list6.pop()
|
||||
print(list6)
|
||||
# Time
|
||||
|
||||
list6.remove('Upon')
|
||||
print(list6)
|
||||
# ['Once', 'a']
|
||||
|
||||
my_list = ['A', 'B', 'C', 'D', 'E']
|
||||
print(my_list)
|
||||
# ['A', 'B', 'C', 'D', 'E']
|
||||
del my_list[2]
|
||||
print(my_list)
|
||||
# ['A', 'B', 'D', 'E']
|
||||
|
||||
|
||||
print(my_list)
|
||||
# ['A', 'B', 'C', 'D', 'E']
|
||||
del my_list[1:3]
|
||||
print(my_list)
|
||||
# ['A', 'D', 'E']
|
||||
|
||||
```
|
||||
|
||||
## Retrieve elements by index
|
||||
|
||||
```python
|
||||
list7 = [2, 3, 6, 8]
|
||||
print(list7.index(8))
|
||||
# 3
|
||||
|
||||
list6 = ['Once', 'Upon', 'a', 'Time']
|
||||
print(list6.index('a'))
|
||||
# 2
|
||||
```
|
||||
|
||||
## Nesting lists
|
||||
|
||||
```python
|
||||
l1 = [1, 43.5, 'Phoebe', True]
|
||||
l2 = ['apple', 'orange', 31]
|
||||
root_list = ['John', l1, l2, 'Denise']
|
||||
print(root_list)
|
||||
# ['John', [1, 43.5, 'Phoebe', True], ['apple', 'orange', 31], 'Denise']
|
||||
```
|
||||
|
||||
## List comprehension
|
||||
|
||||
> List comprehension is an older feature of Python. Now the same functionality can be achieved with greater concision using functional methods like `map` and `filter`. But you may see it used in older code.
|
||||
|
||||
```python
|
||||
values = [1, 2, 4, 6, 8, 9]
|
||||
|
||||
new_values = [i + 1 for i in values]
|
||||
print('new_values', new_values)
|
||||
# new_values [2, 3, 5, 7, 9, 10]
|
||||
new_list = [item + 1 for item in values if item % 2 == 0]
|
||||
|
||||
print('new_list:', new_list)
|
||||
# new_list: [3, 5, 7, 9]
|
||||
```
|
||||
|
|
|
@ -10,3 +10,50 @@ tags: [python, data-structures]
|
|||
- You can increase/decrease their length by adding/removing new members
|
||||
- They **do not allow duplicate members**
|
||||
- **Can only hold immutable objects**
|
||||
|
||||
> Sets are denoted with `{...}`
|
||||
|
||||
## Basic usage
|
||||
|
||||
```python
|
||||
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
|
||||
print(basket) # show that duplicates have been removed
|
||||
print(len(basket))
|
||||
# {'apple', 'pear', 'banana', 'orange'}
|
||||
# 4
|
||||
```
|
||||
|
||||
## Looping through sets
|
||||
|
||||
```python
|
||||
for item in basket:
|
||||
print(item)
|
||||
|
||||
"""
|
||||
apple
|
||||
pear
|
||||
banana
|
||||
orange
|
||||
"""
|
||||
```
|
||||
|
||||
## Check for membership
|
||||
|
||||
```python
|
||||
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
|
||||
print('apple' in basket)
|
||||
# True
|
||||
```
|
||||
|
||||
## Remove items from set
|
||||
|
||||
> `remove` will raise an error if the specified item does not exist, `discard` will not
|
||||
|
||||
```python
|
||||
basket.remove('apple')
|
||||
basket.discard('apricot')
|
||||
print(basket)
|
||||
# {'pear', 'banana', 'orange'}
|
||||
```
|
||||
|
||||
## Add items to a set
|
||||
|
|
|
@ -16,43 +16,48 @@ Tuples have the following properties:
|
|||
- **Allow duplicate** members
|
||||
- They are **indexed**
|
||||
|
||||
As with all containers in Python they permit any data type.
|
||||
|
||||
> Tuples are denoted with `(...)`
|
||||
|
||||
## Basic usage
|
||||
|
||||
```python
|
||||
tup1 = (1, 3, 5, 7)
|
||||
print('tup1[0]:\t', tup1[0])
|
||||
print('tup1[1]:\t', tup1[1])
|
||||
print('tup1[2]:\t', tup1[2])
|
||||
print('tup1[3]:\t', tup1[3])
|
||||
print(tup1[0])
|
||||
print(tup1[1])
|
||||
print(tup1[2])
|
||||
print(tup1[3])
|
||||
|
||||
"""
|
||||
tup1[0]: 1
|
||||
tup1[1]: 3
|
||||
tup1[2]: 5
|
||||
tup1[3]: 7
|
||||
1
|
||||
3
|
||||
5
|
||||
7
|
||||
"""
|
||||
```
|
||||
|
||||
# Slicing
|
||||
## Slicing
|
||||
|
||||
print('tup1[1:3]:\t', tup1[1:3])
|
||||
print('tup1[:3]:\t', tup1[:3])
|
||||
print('tup1[1:]:\t', tup1[1:])
|
||||
print('tup1[::-1]:\t', tup1[::-1])
|
||||
```python
|
||||
tup1 = (1, 3, 5, 7)
|
||||
|
||||
print(tup1[1:3])
|
||||
print(tup1[:3])
|
||||
print(tup1[1:])
|
||||
print(tup1[::-1])
|
||||
|
||||
"""
|
||||
tup1[1:3]: (3, 5)
|
||||
tup1[:3]: (1, 3, 5)
|
||||
tup1[1:]: (3, 5, 7)
|
||||
tup1[::-1]: (7, 5, 3, 1)
|
||||
(3, 5)
|
||||
(1, 3, 5)
|
||||
(3, 5, 7)
|
||||
(7, 5, 3, 1)
|
||||
"""
|
||||
```
|
||||
|
||||
## Looping
|
||||
|
||||
print('len(tup1):\t', len(tup1))
|
||||
# len(tup1): 4
|
||||
|
||||
tup2 = (1, 'John', True, -23.45)
|
||||
print(tup2)
|
||||
# (1, 'John', True, -23.45)
|
||||
|
||||
|
||||
```python
|
||||
tup3 = ('apple', 'pear', 'orange', 'plum', 'apple')
|
||||
for x in tup3:
|
||||
print(x)
|
||||
|
@ -64,20 +69,32 @@ orange
|
|||
plum
|
||||
apple
|
||||
"""
|
||||
```
|
||||
|
||||
## Useful methods and predicates
|
||||
|
||||
```python
|
||||
tup3 = ('apple', 'pear', 'orange', 'plum', 'apple')
|
||||
|
||||
# Count instances of a member
|
||||
print(tup3.count('apple'))
|
||||
print(tup3.index('pear'))
|
||||
|
||||
# 2
|
||||
|
||||
# Get index of a member
|
||||
print(tup3.index('pear'))
|
||||
# 1
|
||||
|
||||
|
||||
# Check for membership
|
||||
if 'orange' in tup3:
|
||||
print('orange is in the Tuple')
|
||||
|
||||
# orange is in the Tuple
|
||||
```
|
||||
|
||||
## Nest tuples
|
||||
|
||||
```python
|
||||
|
||||
tuple1 = (1, 3, 5, 7)
|
||||
tuple2 = ('John', 'Denise', 'Phoebe', 'Adam')
|
||||
tuple3 = (42, tuple1, tuple2, 5.5)
|
||||
print(tuple3)
|
||||
|
@ -85,3 +102,5 @@ print(tuple3)
|
|||
# (42, (1, 3, 5, 7), ('John', 'Denise', 'Phoebe', 'Adam'), 5.5)
|
||||
|
||||
```
|
||||
|
||||
// TODO: How to flatten a tuple?
|
||||
|
|
|
@ -96,6 +96,10 @@ A. Sweighart. 2020. **Beyond the Basic Stuff with Python**
|
|||
|
||||
A. Sweighart. 2015. **Automate the Boring Stuff with Python**
|
||||
|
||||
J. Hunt. 2019. **A Beginner's Guide to Python Programming**
|
||||
|
||||
J. Hunt. 2019. **An Advanced Guide to Python Programming**
|
||||
|
||||
[Tiny Python Projects (O'Reilly)](https://learning.oreilly.com/library/view/tiny-python-projects/9781617297519/)
|
||||
|
||||
[Learning Arduino with Python](https://realpython.com/arduino-python/)
|
||||
|
|
Loading…
Add table
Reference in a new issue