David C. Ullrich wrote:

'ab' in 'abc'
True

'a' in 'abc' works according to the standard meaning of o in collection.

'ab' in 'abc' could not work by that standard meaning because strings, as virtual sequences, only contain characters (length 1 strings). Among built-in collections, this limitation is unique to strings (and bytes, in 3.0). So in 2.3, 'in' was given a useful extension of meaning that is also unique to strings (and bytes).

[1,2] in [1,2,3]
False

[1,2] can be an member of tuples, lists, dicts and other general collections. [1,2] in collection therefore has that meaning, that it is a single element of collection. Extending the meaning would conflict with this basic meaning.

Is there a reason for the inconsistency? I would
have thought "in" would check for elements of a
sequence, regardless of what sort of sequence it was...

It is not an inconsistency but an extension corresponding to the limitation of what an string element can be.

Terry J. Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to