title: Efficiently find overlap of a lists of tuples
body: <p>I have a bunch of lists, each composed of tuples.</p>
  
  <pre><code>A = [(1,2,3),(4,5,7),(8,9,10),(5,6,2)]
  B = [(1,3,6),(4,2,8),(3,6,7),(5,2,8)]
  C = [(6,2,3),(1,7,2),(5,7,2),(7,2,7)]
  </code></pre>
  
  <p>I need to find the group of tuples such that the first element of the tuple appears in every list. (I know this is very confusing) For my above example, the overlap would be:</p>
  
  <pre><code>overlap = [(1,2,3),(1,3,6),(1,7,2),(5,6,2),(5,2,8),(5,7,2)]
  </code></pre>
  
  <p>This is because a tuple with the number '1' in the first element of the tuple appears in every list. This is the same for the number '5'.</p>
  
  <p>What is the best way to do this?</p>
  
  <p>I currently have working code, but I feel like there is a better way to do this.</p>
  
  <pre><code>big_list = [A,B,C]
  overlap = []
  all_points = list(set([item for item in big_list]))
  for (f,s,t) in all_points:
      in_all = True
      for lest in big_list:
          present = False
          for (first, second, third) in lest:
              if first == f:
                  present = True
          if not present:
              in_all = False
      if in_all:
          overlap.append((f,s,t))
  </code></pre>