<p>我个人喜欢用<a href="https://docs.python.org/2/library/sets.html#set-objects" rel="nofollow">^{<cd1>}</a>来做这件事。例如:</p>
<pre><code>opts = ["associé", "gérant", "président", "directeur"]
if set(opts) & set(gender):
...
</code></pre>
<p><code>&</code>用于集合交集操作,该操作返回一个新的<code>set</code>,集合在<code>&</code>两侧共享项。只有当<code>gender</code>和<code>opts</code>中存在重叠时,才会执行<code>if</code>块。也可以对<code>elif</code>重复此过程,创建一个可能选项的列表,并检查该列表与<code>gender</code>之间的重叠。总之,你可以这样做:</p>
<pre><code>male_opts = ["associé", "gérant", "président", "directeur"]
female_opts = ["associée", "gérante", "présidente", "directrice"]
if set(male_opts) & set(gender):
gen = "male"
elif set(female_opts) & set(gender):
gen = "female"
else:
gen = "error"
</code></pre>
<p>另外,正如<strong>@Copperfield</strong>指出的那样。通过创建<code>*_opt</code>变量集(甚至可能是<code>gender</code>集),可以进一步提高效率:</p>
<pre><code>male_opts = {"associé", "gérant", "président", "directeur"}
female_opts = {"associée", "gérante", "présidente", "directrice"}
gender = set(gender)
if male_opts & gender:
...
</code></pre>
<h2>编辑:</h2>
<p>上面的代码假设<code>gender</code>是一个iterable,但是从注释来看,它似乎是一个字符串(例如<code>'associé gérant'</code>)。尽管此时接受的答案更好,但您仍然可以通过将<code>gender</code>作为组成字符串的一组单词来使用此解决方案:</p>
<pre><code>gender = set(gender.split())
</code></pre>