Search code examples
pythonlistrecursioncomparison

How to find common elements in list of lists?


I'm trying to figure out how to compare an n number of lists to find the common elements. For example:

p=[ [1,2,3],
    [1,9,9],
      ..
      ..
    [1,2,4]

>> print common(p)
>> [1]

Now if I know the number of elements I can do comparions like:

for a in b:
  for c in d:
    for x in y:
...

but that wont work if I don't know how many elements p has. I've looked at this solution that compares two lists https://stackoverflow.com/a/1388864/1320800

but after spending 4 hrs trying to figure a way to make that recursive, a solution still eludes me so any help would be highly appreciated!


Solution

  • You are looking for the set intersection of all the sublists, and the data type you should use for set operations is a set:

    result = set(p[0])
    for s in p[1:]:
        result.intersection_update(s)
    print result