Lists

What are lists?

Lists: a sequence of variables

  • we can use lists to store multiple items into one variable
  • used to store collections of data
  • changeable, ordered, allow duplicates

List examples in Python, JavaScript, and Pseudocode.

fruits = ["apple", "grape", "strawberry"]
print (fruits)
['apple', 'grape', 'strawberry']
const fruits = ["apple", "grape", "strawberry"];
fruits  [apple, grape, strawberry]

More list examples

brands = ["nike", "adidas", "underarmour"] #string
numbers = [1, 2, 3, 4, 5] #integer
truefalse = [True, False, True] #boolean

Lists are just one of four collection data types in Python

  • Tuple: collection that is ordered, unchangeable, allows duplicates
  • Set: collection that is unordered, unchangeable, doesn't allow duplicates
  • Dictionary: collection that is ordered, changeable, doesn't allow duplicates

Terms

  • Index: a term used to sort data in order to reference to an element in a list (allows for duplicates)
  • Elements: the values in the list assigned to an index
fruits = ["apple", "grape", "strawberry"]
index = 1

print (fruits[index])

Methods in Lists

Method Definition Example
append() adds element to the end of the list fruits.append("watermelon")
index() returns the index of the first element with the specified value fruits.index("apple")
insert() adds element at given position fruits.insert(1, "watermelon")
remove() removes the first item with the specified value fruits.remove("strawberry")
reverse() reverses the list order fruits.reverse()
sort() sorts the list fruits.sort()
count() returns the amount of elements with the specified value fruits.count("apple")
copy() returns a copy of the list fruits.copy()
clear() removes the elements from the list fruits.clear()
sports = ["football", "soccer", "baseball", "basketball"]

# change the value "soccer" to "hockey"
sports.remove("soccer")
sports.insert(1, "hockey")
print (sports)
['football', 'hockey', 'baseball', 'basketball']
sports = ["football", "soccer", "baseball", "basketball"]

# add "golf" as the 3rd element in the list
sports.insert(2, "golf")
print (sports)
['football', 'soccer', 'golf', 'baseball', 'basketball']

Try this

  • Determine the output of the code segment

The psuedocode iterates through the list words so for each stirng in words. If the length of the word is equal to 3 than it will remove the word from the list. If the length of the string is not equal to three it will incrment the index variable. The program will print the words in the list that are not three letters ps images don't dispaly on wget and link doesn't seem to dierect to blog

Iteration

stuff

  • title:Iteration HW- toc: true
  • comments: true
  • categories: [iteration]
  • tags: [iteration]

First, what not to do

Iteration is important for your time and sanity

print("alpha")
print("bravo")
print("charlie")
print("delta")
print("echo")
print("foxtrot")
print("golf")
print("hotel")
print("india")
print("juliett")
print("kilo")
print("lima")
print("mike")
print("november")
print("oscar")
print("papa")
print("quebec")
print("romeo")
print("sierra")
print("tango")
print("uniform")
print("victor")
print("whiskey")
print("x-ray")
print("yankee")
print("zulu")
#please help me 
alpha
bravo
charlie
delta
echo
foxtrot
golf
hotel
india
juliett
kilo
lima
mike
november
oscar
papa
quebec
romeo
sierra
tango
uniform
victor
whiskey
x-ray
yankee
zulu

Coding all of these individually takes a lot of unnecessary time, how can we shorten this time?

Iteration

Iteration is the repetition of a process or utterance applied to the result or taken from a previous statement. There's a lot of types of iteration though, what to use? How do we apply iteration to lists?

Some methods include using a "for loop", using a "for loop and range()", using a "while loop", and using comprehension

Lists, tuples, dictionaries, and sets are iterable objects. They are the 'containers' that store the data to iterate.

Each of these containers are able to iterate with the iter() command.

There are 2 types of iteration:definite and indefinite. Definite iteration clarifies how many times the loop is going to run, while indefinite specifies a condition that must be met

for variable in iterable: 
    statement()

Iterator? Iterable? Iteration?

  • When an object is iterable it can be used in an iteration
  • When passed through the function iter() it returns an iterator
  • Strings, lists, dictionaries, sets and tuples are all examples of iterable objects.
a = ['alpha', 'bravo', 'charlie']

itr = iter(a)
print(next(itr))
print(next(itr))
print(next(itr))
alpha
bravo
charlie

Loops

  • Well, above is basically just printing them again, so how do we takes these iterators into something we can make use for?
  • Loops take essentially what we did above and automates it, here are some examples.
list = ["Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu"]

# using a for loop 
for i in list:
    #for item in the list, print the item 
    print(i)
    
Alpha
Bravo
Charlie
Delta
Echo
Foxtrot
Golf
Hotel
India
Juliett
Kilo
Lima
Mike
November
Oscar
Papa
Quebec
Romeo
Sierra
Tango
Uniform
Victor
Whiskey
X-ray
Yankee
Zulu
list = ["Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu"]

# Taking the length of the list 
lengthList = len(list) 

# Iteration using the amount of items in the list
for i in range(lengthList):
    print(list[i])
Alpha
Bravo
Charlie
Delta
Echo
Foxtrot
Golf
Hotel
India
Juliett
Kilo
Lima
Mike
November
Oscar
Papa
Quebec
Romeo
Sierra
Tango
Uniform
Victor
Whiskey
X-ray
Yankee
Zulu
list = ["Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu"]

# Once again, taking the length of the list
lengthList = len(list)

# Setting the variable we are going to use as 0
i=0 

# Iteration using the while loop 
# Argument saying WHILE a certain variable is a certain condition, the code should run
while i < lengthList:
    print(list[i])
    i += 1
Alpha
Bravo
Charlie
Delta
Echo
Foxtrot
Golf
Hotel
India
Juliett
Kilo
Lima
Mike
November
Oscar
Papa
Quebec
Romeo
Sierra
Tango
Uniform
Victor
Whiskey
X-ray
Yankee
Zulu

Using the range() function

But wait, there's more

  • Need to save even more time? The above is useful for many occasions, but can get tedious fast, in this case, use range()
x = range(5)

for n in x:
    print(n)
0
1
2
3
4

Else, elif, and break

For when 1 statement isn't enough

  • Else:when the condition does not meet, do statement()- Elif: when the condition does not meet, but meets another condition, do statement()
  • Break: stop the loop

HW Iteration

Use the list below to turn the first letter of any word (using input()) into its respective NATO phonetic alphabet word Turn each letter in the response into the words that correspond with in the list Ex:

list ->

lima india sierra tango

codes = ["alfa", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india", "juliett", "kilo", "lima", "mike", "november", "oscar", "papa", "quebec", "romeo", "sierra", "tango", "uniform", "victor", "whiskey", "xray", "yankee", "zulu"]

def Nato(codes):
    phrases = []
    rsp = input("Enter a word you want to convert into NATO code: ")
    solve_rsp = rsp.lower().strip()

    for letter in solve_rsp:
        for code in codes:
            if code[0] == letter:
                phrases.append(code)

    for phrase in phrases:
        print(phrase)
Nato(codes)
bravo
uniform
tango
tango
echo
romeo

2D Iteration

2D Arrays

A 2D array is simply just a list of lists. The example below is technically correct but...

keypad = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [" ", 0, " "]]

Conventially 2D arrays are written like below. This is because 2D arrays are meant to be read in 2 dimensions (hence the name). Writing them like below makes them easier to visualize and understand.

keypad =   [[1, 2, 3],
            [4, 5, 6],
            [7, 8, 9],
            [" ", 0, " "]]

Printing a 2D Array

We already know that we can't just print the matrix by calling it. We need to iterate through it to print it.

def print_matrix1(matrix): 
    for i in range(len(matrix)):  # outer for loop. This runs on i which represents the row. range(len(matrix)) is in order to iterate through the length of the matrix
        for j in range(len(matrix[i])):  # inner for loop. This runs on the length of the i'th row in the matrix (j changes for each row with a different length)
            print(matrix[i][j], end=" ")  # [i][j] is the 2D location of that value in the matrix, kinda like a coordinate pair. [i] iterates to the specific row and [j] iterates to the specific value in the row. end=" " changes the end value to space, not a new line.
        print() # prints extra line. this is in the outer loop, not the inner loop, because it only wants to print a new line for each row
print("Raw matrix (list of lists): ")
print(keypad)
print("Matrix printed using nested for loop iteration:")
print_matrix1(keypad)
print()
Raw matrix (list of lists): 
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [' ', 0, ' ']]
Matrix printed using nested for loop iteration
1 2 3 
4 5 6 
7 8 9 
  0   

def print_matrix2(matrix):
    for row in matrix:  # Iterates through each "row" of matrix. Row is a dummy variable, it could technically be anything. It iterates through each value of matrix and each value is it's own list. in this syntax the list is stored in "row".
        for col in row:  # Iterates through each value in row. Again col, column, is a dummy variable. Each value in row is stored in col.
            print(col, end=" ") # Same as 1
        print() # Same as 1

print_matrix2(keypad)
1 2 3 
4 5 6 
7 8 9 
  0   

More Functions

Try to find another way to print the matrix. Only complete one of the two (unless you'd like to do both). Below is a hint

fruit = ["apples", "bananas", "grapes"]
print(fruit)
print(*fruit) # Python built in function: "*". Figure out what it does
['apples', 'bananas', 'grapes']
apples bananas grapes
def print_matrix3(matrix):
    code = "your code goes here"
    # Don't have to do one 

Alternatively, find a way to print the matrix using the iter() function you already learned. Or use both!

Homework

keypad =   [[1, 2, 3],
            [4, 5, 6],
            [7, 8, 9],
            [" ", 0, " "]]

def print_matrix4(keypad):
    iterations = iter(keypad)
    
    while True:
        try:
            row = next(iterations)
            for column in row:
                print(column, end = " ")
            print()
        except StopIteration:
            break
print_matrix4(keypad)
            
1 2 3 
4 5 6 
7 8 9 
  0   

Print what month you were born and how old you are by iterating through the keyboard (don't just write a string).

keyboard = [["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "="],
            ["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]"],
            ["A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'"],
            ["Z", "X", "C", "V", "B", "N", "M", ",", ".", "/"]]

def printer(keyboard):
    rsp = input("Month: ")
    rsp2 = input("Age: ")
    solve_rsp = "" + str(rsp.upper().strip())
    solve_rsp2 = "" + str(rsp2).strip().upper()

    for letter in solve_rsp:
        if any(letter in row for row in keyboard):
            print(letter)
            
            for row in keyboard:
                if letter in row == False:
                    row[row.index(letter)] = " "
    for letter in solve_rsp2:
        if any(letter in row for row in keyboard):
            print(letter)
            
            for row in keyboard:
                if letter in row == False:
                    row[row.index(letter)] = " "

printer(keyboard)
D
E
C
E
M
B
E
R
1
6

Challenge also homework

Change all of the letters that you DIDN'T print above to spaces, " ", and then print the full keyboard. (the things you did print should remain in the same spot)

Alternative Challenge: If you would prefer, animate it using some form of delay so it flashes one of your letters at a time on the board in order and repeats. (this one may be slightly more intuitive)

DO NOT HARD CODE THIS. Don't make it harder on yourself, iterate through, make it abstract so it can be used dynamically. You should be able to input any string and your code should work.

keyboard = [["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "="],
            ["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]"],
            ["A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'"],
            ["Z", "X", "C", "V", "B", "N", "M", ",", ".", "/"]]

def printer(keyboard):
    rsp = input("Month: ")
    rsp2 = input("Age: ")
    solve_rsp = "" + str(rsp.upper().strip())
    solve_rsp2 = "" + str(rsp2).strip().upper()

    for letter in solve_rsp:
        if any(letter in row for row in keyboard):
            # print(letter)
            
            for row in keyboard:
                if letter in row:
                    row[row.index(letter)] = " "
    for letter in solve_rsp2:
        if any(letter in row for row in keyboard):
            # print(letter)
            for row in keyboard:
                if letter in row:
                    row[row.index(letter)] = " "

    for row in keyboard:
        print(" ".join(row))

printer(keyboard)
`   2 3 4 5   7 8 9 0 - =
Q W     T Y U I O P [ ]
A S   F G H J K L ; '
Z X   V   N   , . /

If you get stuck you can just make a picture with an array and print it (I will grade based on how good it looks)

I do expect an attempt so write some code to show you tried the challenge.