On Sun, Mar 22, 2020 at 09:49:26PM -0700, Guido van Rossum wrote:
On Sun, Mar 22, 2020 at 6:51 PM Steven D'Aprano <steve@pearwood.info> wrote:
We might have a terminology issue here, since according to Wikipedia there is some dispute over whether or not to include the equality case in subset/superset:
https://en.wikipedia.org/wiki/Subset
For what it is worth, I'm in the school that subset implies proper subset [...]
Wikipedia's pedantry notwithstanding, I don't think this is a useful position *when talking about Python sets*, since Python's set's .issubset() method returns True when the argument is the same set:
But Python's subset *operator* returns False when the arguments are equal: py> {1} < {1} False and until today I did not realise the operator and method used different definitions. I'm going to have to review some of my code using sets to see if my mistaken understanding that they were the same has introduced some hidden bugs :-( I'm not going to get into an argument about which definition is correct. I think the differences between the operators and the methods should be better described in the docs, but at least the docs do explicitly note that set.issubset is equivalent to the `<=` operator. (Not the docstring though. You have to read the docs on the website.) Today I read Wikipedia's pedantry and learned for the first time that there are people who define "subset" to include equality. I had not come across that before, so I was confused by Steve Jorgensen's talk about sets that are similtaneously subsets and supersets of themselves. But now that I realise he is talking about *equal* sets, it makes sense. I'm still confused by his position that there are sets (iterables?) which are simultaneously subsets and supersets of each other without being equal, but that's a separate issue for him to clarify. -- Steven