'<char> in <string>' works, why doesnt '<string> in <string>'?

damien morton morton at dennisinter.com
Sat Mar 9 11:40:50 EST 2002


Ok, I see how this works. 

'<string1> in <string2>' would always returns false; as the elements
of a <string2> are all characters you can never find <string1> amongst
them (unless its a string of length 1).

Its counter-intuitive for someone playing with strings as strings
rather than as sequences of characters, however.

'c' in 'the quick brown fox'     -> 1

'fox' in 'the quick brown fox'   -> 1 (instead of TypeError)

Is there any circumstance where youd expect (or want) the later not to
work? I expected and wanted it to work (but instead got an error), its
quite a clear and unambiguous expression (for strings only).


Justin Sheehy <justin at iago.org> wrote in message news:<mailman.1015633276.4847.python-list at python.org>...
> morton at dennisinter.com (damien  morton) writes:
> 
> >>>> 'c' in 'the quick brown fox'
>  1
> >>>> 'fox' in 'the quick brown fox'
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in ?
> > TypeError: 'in <string>' requires character as left operand
> >
> > is this by design?
> >
> > is there any reason why '<string> in <string>' shouldnt work?
> 
> The "in" operator tests to see if the first operand is an element of
> the sequence which is the second element.  A string is a sequence of
> characters (which are 1-element strings).  Thus, the only thing which
> can be an element of a string is a single character.
> 
> -Justin



More information about the Python-list mailing list