On Thu, Sep 19, 2019 at 10:32 PM Steven D'Aprano
On Thu, Sep 19, 2019 at 03:26:27PM +1000, Chris Angelico wrote:
On Thu, Sep 19, 2019 at 3:08 PM Richard Higginbotham
wrote: I'm not sure if there is any interest by others but I have frequently come across cases where I would like to compare items in one list in another similar to relational algebra. For example are the file names in A in B and if so return a new list with those items. Long story short, I wrote some functions to do that. They are quite simple and fast (due to timsort in no small part). Even the plain python code is faster than the built in set functions (afaik). I created a github and put the ones I thought the community might like in there. https://github.com/ponderpanda/listex
an example would be a = [1,2,3,4,5,6] b = [1,3,7,4] list_intersection(a,b, sorta=True, sortb=True)
returns [1,3,4]
Can you elaborate on how this differs from using the built-in set type for set operations? eg is this for situations where the values are not all hashable?
Sets are unordered and can contain no duplicates. Lists are ordered and can contain duplicates, so you might think of them as "ordered multisets".
With the sorta/sortb API and the algorithmic assumption that the heads of both lists can be checked, I think the value of element order has been lost, so the only significance is the possibility of duplicates. The given use-case of file names doesn't justify this. So I'm curious what the OP's actual use-case was for using lists here. ChrisA