- 1Let’s start with iterating over a dictionary. Recall that a dictionary is just a collection of keys and values. d = { “Name”: “Guido”, “Age”: 56, “BDFL”: True } print d.items() # => [(‘BDFL’…
- 2While .items() returns an array of
*tuples*with each tuple consisting of a key/value pair from the dictionary:*The .keys() method returns a list of the dictionary’s keys, and*The .values() me… - 3For iterating over lists, tuples, dictionaries, and strings, Python also includes a special keyword: in. You can use in very intuitively, like so: for number in range(5): print number, d = { …
- 4Let’s say you wanted to build a list of the numbers from 0 to 50 (inclusive). We could do this pretty easily: my_list = range(51) But what if we wanted to generate a list according to some logic…
- 5Here’s a simple example of list comprehension syntax: new_list = [x for x in range(1, 6)] # => [1, 2, 3, 4, 5] This will create a new_list populated by the numbers one to five. If you want those…
- 6Great work! Now it’s time for you to create a list comprehension all on your own. c = [‘C’ for x in range(5) if x < 3] print c The example above creates and prints out a list containing [‘C’, ‘C…
- 7Sometimes we only want part of a Python list. Maybe we only want the first few elements; maybe we only want the last few. Maybe we want every other element! List slicing allows us to access elemen…
- 8If you don’t pass a particular index to the list slice, Python will pick a default. to_five = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’] print to_five[3:] # prints [‘D’, ‘E’] print to_five[:2] # prints [‘A’, ‘…
- 9We have seen that a positive stride progresses through the list from left to right. A
*negative*stride progresses through the list from right to left. letters = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’] print l… - 10A positive stride length traverses the list from left to right, and a negative one traverses the list from right to left. Further, a stride length of 1 traverses the list “by ones,” a stride lengt…
- 11Great work! See? This list slicing business is pretty straightforward. Let’s do one more, just to prove you really know your stuff.
- 12One of the more powerful aspects of Python is that it allows for a style of programming called
**functional programming**, which means that you’re allowed to pass functions around just as if they w… - 13Lambda functions are defined using the following syntax: my_list = range(16) filter(lambda x: x % 3 == 0, my_list) Lambdas are useful when you need a quick function to do some work for you. If …
- 14All right! Time to test out filter() and lambda expressions. cubes = [x ** 3 for x in range(1, 11)] filter(lambda x: x % 3 == 0, cubes) The example above is just a reminder of the syntax.
- 15First, let’s review iterating over a dict.
- 16Good! Now let’s take another look at list comprehensions. squares = [x ** 2 for x in range(5)]
- 17Great! Next up: list slicing. str = “ABCDEFGHIJ” start, end, stride = 1, 6, 2 str[start:end:stride] You can think of a Python string as a list of characters.
- 18Last but not least, let’s look over some lambdas. my_list = range(16) filter(lambda x: x % 3 == 0, my_list) We’ve given you another (slightly different) garbled. Sort it out with a filter() and …

- 1Welcome to an intro level explanation of bitwise operations in Python! Bitwise operations might seem a little esoteric and tricky at first, but you’ll get the hang of them pretty quickly. *Bitwis…
- 2When we count, we usually do it in base 10. That means that each place in a number can hold one of ten values, 0-9. In binary we count in base two, where each place can hold one of two values: 0 or…
- 3All right! Time to practice counting in binary. To make sure you’ve got the hang of it, fill out the rest of the numbers all the way up to twelve. Please
**do not**use the str() method or any oth… - 4Excellent! The biggest hurdle you have to jump over in order to understand bitwise operators is learning how to count in base 2. Hopefully the lesson should be easier for you from here on out. Th…
- 5Python has an int() function that you’ve seen a bit of already. It can turn non-integer input into an integer, like this: int(“42”) # ==> 42 What you might not know is that the int function actu…
- 6The next two operations we are going to talk about are the left and right shift bitwise operators. These operators work by shifting the bits of a number over by a designated number of slots. The b…
- 7The bitwise AND (&) operator compares two numbers on a bit level and returns a number where the bits of that number are turned on if the corresponding bits of
**both**numbers are 1. For example: … - 8The bitwise OR (|) operator compares two numbers on a bit level and returns a number where the bits of that number are turned on if
**either**of the corresponding bits of either number are 1. For … - 9The XOR (^) or
*exclusive or*operator compares two numbers on a bit level and returns a number where the bits of that number are turned on if**either**of the corresponding bits of the two number… - 10The bitwise NOT operator (~) just flips all of the bits in a single number. What this actually means to the computer is actually very complicated, so we’re not going to get into it. Just know that …
- 11A
*bit mask*is just a variable that aids you with bitwise operations. A bit mask can help you turn specific bits on, turn others off, or just collect data from an integer about which bits are on o… - 12You can also use masks to turn a bit in a number on using |. For example, let’s say I want to make sure the rightmost bit of number a is turned on. I could do this: a = 0b110 # 6 mask = 0b1 # 1 de…
- 13Using the XOR (^) operator is very useful for flipping bits. Using ^ on a bit with the number one will return a result where that bit is flipped. For example, let’s say I want to flip all of the …
- 14Finally, you can also use the left shift ( >) operators to slide masks into place. a = 0b101 # Tenth bit mask mask = (0b1 << 9) # One less than ten desired = a ^ mask Let’s say that I want to …

## What you'll create

Portfolio projects that showcase your new skills