Carly's Clippers

When you ask a question, don’t forget to include a link to the exercise or project you’re dealing with!
https://www.codecademy.com/courses/learn-python-3/projects/python-carlys-clippers

I’m stuck on #12. I don’t understand list comprehension. Can someone please explain them to me? It doesn’t make sense to me.

Thanks!

It can be confusing. It’s a quick(er), one line operation to create a new list, essentially.

Basic structure for list comprehensions:
[expression for item in list]

But this one adds a condition in the expression:

x for x in range(len(x) if blah is < blah

Check the docs:

“Common applications are to make new lists where each element is the result of some operations applied to each member of another sequence or iterable, or to create a subsequence of those elements that satisfy a certain condition.”

So, step 12:
" Use a list comprehension to create a list called cuts_under_30 that has the entry hairstyles[i] for each i for which new_prices[i] is less than 30. You can use range() in your list comprehension to make i go from 0 to len(new_prices) - 1"

The easiest way to explain is when you come upon stuff like this, break down the question into smaller bits.

1.) you create a variable called cuts_under_30
2.) you’re comparing indexed items in three lists and adding a condition to produce a new list.

  • The indexed item, in hairstyles[i] for element [i] in the 2nd list (using range & len), prices:
    for [i] in range(len(prices))
  • then you add your condition from the 3rd list: `if new_prices[i] <30]

All together:

cuts_under_30 = [hairstyles[i] for i in range(len(prices)) if new_prices[i] < 30]

print(cuts_under_30)

['bouffant', 'pixie', 'crew', 'bowl']

The hint is helpful too:
“new_list = [old_list[i] for i in range(len(old_list)) if different_list[i] < 0]”

And, the forums have several threads on list comprehensions too.

1 Like