Ask your own question, for FREE!
MIT 6.189 A Gentle Introduction to Programming Using Python (OCW) 10 Online
OpenStudy (anonymous):

Has anyone tried the first list comprehension optional exercise? I'm getting a syntax error and I'm not sure why. My code is: def number_list(random_list): num = [x if isinstance(x, int) in random_list] return num print number_list([2, 4.01, 6, 9.01, "hello", "why"])

OpenStudy (turingtest):

num = [x if isinstance(x, int) in random_list] this line is no good, you need to rephrase it, probably turning it into a few lines

OpenStudy (anonymous):

I get that that is the line that is incorrect, but if we are supposed to use a list comprehension to create the list, then it can't be a few lines, can it?

OpenStudy (turingtest):

could you post a link to the exercise?

OpenStudy (anonymous):

how about [x for x in ln list if x isinstance of(...] - now i'll go read the problem....

OpenStudy (anonymous):

it seems to work: r = ['a', 'w', [1,2,3], 5,'why me?',8] b = [x for x in r if x isinstance(x,int)] [5, 8]

OpenStudy (anonymous):

ooops [x for x in r if isinstance(x,int)] ...threw an extra x in....

OpenStudy (anonymous):

The syntax for list comprehension is [x for x in SOMETHING if EXPRESSION] where "SOMETHING" is a list and "EXPRESSION" has a boolean value for example: [x for x in [1,2,3] if x > 2] while your list comprehension begins "x if" instead of "x for".

OpenStudy (anonymous):

a = ['op', 1.7, 101, 3, 'ate', 10, 35.6] b = [i for i in a if isinstance(i, int)] print b b = [(x,y)for y in range(11) for x in range(-5, 6) if x**2 + 1 == y] print b b = [(x,y)for y in range(11)for x in range(-5, 6) if x**2 + y**2 == 25] print b

OpenStudy (anonymous):

I think it is better to say the syntax is [ EXPRESSION for x in LIST if BOOLEAN EXPRESSION] >>> a = [1,2,3] >>> lc = [2*x for x in a] >>> print lc [2, 4, 6]

OpenStudy (anonymous):

Thanks all for your help. :)

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!