擅长:python、mysql、java
<p>一种不使用<code>*</code>或<code>map</code>的替代方法如下:</p>
<pre><code>from functools import reduce
my_words = ["house", "cheese", "helicopter"]
my_sets = [set(w) for w in my_words]
head, tail = my_sets[0], my_sets[1:]
result = reduce(set.intersection, tail, head)
print(result)
</code></pre>
<p>上述方法可以考虑这个<a href="https://stackoverflow.com/a/58191962/4001592">answer</a>的函数版本。请注意,<a href="https://docs.python.org/3.7/library/stdtypes.html#frozenset.intersection" rel="nofollow noreferrer">set.intersection</a>是为更多的多个集合而设计的,如文档中所示:</p>
<blockquote>
<p>Return a new set with elements common to the set and all others.</p>
</blockquote>
<p>因此,为了完整起见,我包括以下两个例子:</p>
<pre><code>my_words = ["house", "cheese", "helicopter"]
result = set.intersection(*(set(s) for s in my_words))
</code></pre>
<p><strong>输出</strong></p>
<pre><code>{'h', 'e'}
</code></pre>
<p>正如@Jab所评论的,另一种方法是使用map:</p>
<pre><code>result = set.intersection(*map(set, my_words))
</code></pre>