Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialAlex Tirrell
3,359 Pointscount() is finding one too many correct answers
In order to find how many questions were answered correctly, I'm flattening my list of answer information and counting the number of True values in it. The flattened list is:
[35, True, datetime.timedelta(0, 3, 120616), 12, True, datetime.timedelta(0, 1, 348287), 6, False, datetime.timedelta(0, 1, 561616), 3, True, datetime.timedelta(0, 2, 859576), 3, True, datetime.timedelta(0, 1, 238063), 6, False, datetime.timedelta(0, 2, 471605), 4, True, datetime.timedelta(0, 2, 488742), 8, True, datetime.timedelta(0, 1, 910301), 80, True, datetime.timedelta(0, 1, 920059), 1, True, datetime.timedelta(0, 2, 17969)]
Counting the Trues in the list, you'll see there are eight. However, if I perform a .count(True) on the list, it returns 9. What's going on?
1 Answer
Steven Parker
231,236 Points
Your list includes the value 1
, and 1 == True
.
One way around this would be to get a count based on identity instead of equality using a comprehension:
truecount = len([1 for x in flatlist if x is True]))
Alex Tirrell
3,359 PointsAlex Tirrell
3,359 PointsOkay, I think I understand. I had thought about that as an issue, but I thought that python considered any integer above 0 as True, in which case there should have been a lot more false positives. Based on your answer, I'm assuming that "truthy" and "True" are not the same thing. I'm still not clear, though, in which cases any positive number will count as true, and in which cases it will only count "True" and "1". Can you help me out with that?