Take the intersection of an arbitrary number of lists in python

前端 未结 7 1941
失恋的感觉
失恋的感觉 2020-12-21 05:37

Suppose I have a list of lists of elements which are all the same (i\'ll use ints in this example)

[range(100)[::4], range(100)[::3], range(100)         


        
7条回答
  •  星月不相逢
    2020-12-21 06:29

    Use sets, which have an intersection method.

    >>> s = set()
    >>> s.add(4)
    >>> s.add(5)
    >>> s
    set([4, 5])
    >>> t = set([2, 4, 9])
    >>> s.intersection(t)
    set([4])
    

    For your example, something like

    >>> data = [range(100)[::4], range(100)[::3], range(100)[::2], range(100)[::1]]
    >>> sets = map(set, data)
    >>> print set.intersection(*sets)
    set([0, 96, 36, 72, 12, 48, 84, 24, 60])
    

提交回复
热议问题