 <pre><code>set.intersection(*map(set,d3)) </code></pre> <p><em>Will</em> actually work, though because <code>d3</code> already contains sets you can just do:</p> <pre><code>set.intersection(*d3) </code></pre> <p>And, in fact, only the first one needs to be a <code>set</code> - the others can be any iterable, and <code>intersection</code> will setify them by itself.</p> <p>The problem you're having doesn't seem to be in this code - rather, </p> <pre><code>for list1 in masterlist: list1 = thingList1 </code></pre> <p>Won't actually put anything into <code>thingList1</code>. It is hard to tell without seeing what <code>masterlist</code> looks like, but you may want something like:</p> <pre><code>for list1 in masterlist: thingList1[:] = list1 </code></pre> <p><code>print</code> your three lists before you do the intersection to make sure they contain what you expect.</p>