Friday, April 11, 2014

Exercise 10: List overlap comprehensions

Exercise

This week's exercise is going to be revisiting an old exercise (see Exercise 5), except require the solution in a different way.
Take two lists, say for example these two:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
and write a program that returns a list that contains only the elements that are common between the lists (without duplicates). Make sure your program works on two lists of different sizes. Write this in one line of Python. (Hint: Remember list comprehensions from Exercise 7).

Extra:
  • Randomly generate two lists to test this

Discussion

Concepts for this week:
  • List comprehensions
  • Random numbers, continued

List comprehensions

We already discussed list comprehensions in Exercise 7, but they can be made much more complicated.
For example:
x = [1, 2, 3]
y = [5, 10, 15]
allproducts = [a*b for a in x for b in y]
At the end of this piece of code, allproducts will contain the list [5, 10, 15, 10, 20, 30, 15, 30, 45]. So you can put multiple for loops inside the comprehension. But you can also add more complicated conditionals:
x = [1, 2, 3]
y = [5, 10, 15]
customlist = [a*b for a in x for b in y if a*b%2 != 0]
Now customlist contains [5, 15, 15, 45] because only the odd products are added to the list.
In general, the list comprehension takes the form:
[EXPRESSION FOR_LOOPS CONDITIONALS]
as shown in the examples above.


Random numbers, continued

Try to use the Python random documentation to figure out how to generate a random list. As a hint look below:
a = random.sample(range(100), 5)
This line of code will leave a containing a list of 5 random numbers from 0 to 99.


Happy coding!

Forgot how to submit exercises?

No comments:

Post a Comment