if statement on lenght of a list
MRAB
python at mrabarnett.plus.com
Tue May 17 14:32:14 EDT 2011
On 17/05/2011 19:02, Joe Leonardo wrote:
> Hey all,
>
> Totally baffled by this…maybe I need a nap. Writing a small function to
> reject input that is not a list of 19 fields.
>
> def breakLine(value):
> if value.__class__() != [] and value.__len__() != 19:
> print 'You must pass a list that contains 19 fields.'
> else:
> print 'YAY!'
>
> If I pass:
>
> breakLine([])
>
> I get:
>
> YAY!
>
> I expect:
>
> You must pass a list that contains 19 fields.
>
> If I print len(value) I get: 0
>
> What is going on here?
>
If value is [], then value.__class__() is [], so value.__class__() !=
[] is False.
What you meant was:
if value.__class__() != [] or value.__len__() != 19:
print 'You must pass a list that contains 19 fields.'
else:
print 'YAY!'
although the Pythonic way to write it would be:
if not isinstance(value, list) or len(value) != 19:
print 'You must pass a list that contains 19 fields.'
else:
print 'YAY!'
or, even better:
if isinstance(value, list) and len(value) == 19:
print 'YAY!'
else:
print 'You must pass a list that contains 19 fields.'
More information about the Python-list
mailing list