Statement evals as False in my IDE and True elsewhere

Chris Angelico rosuav at gmail.com
Thu Jan 30 17:25:31 EST 2014


On Fri, Jan 31, 2014 at 9:04 AM, CM <cmpython at gmail.com> wrote:
>     fake_data = ['n/a', 'n/a', 'n/a', 'n/a', '[omitted]', '12']
>     fake_result = not all(i == '[omitted]' for i in fake_data)
>     print 'This is fake result: ', fake_result

Trying to get my head around this. You want to see if all the values
in fake_data are '[omitted]' or not? That is to say, if there's
anything that isn't '[omitted]'? Not sure that that's a normal thing
to be asking, but that's what your code appears to do.

What happens if you try this?

fake_data = ['n/a', 'n/a', 'n/a', 'n/a', '[omitted]', '12']
fake_result = set(fake_data)>{'[omitted]'}

In theory, that should do the exact same thing as your code (returning
True if there's anything in fake_data that is not '[omitted]').

The other thing to try is peppering your code with print statements.
Divide the work up into pieces - show the entire loop and what happens
- print out everything you can imagine. See where the difference
begins between inside and outside the IDE. Once you find that, you'll
have a clue as to what's wrong.

ChrisA



More information about the Python-list mailing list