擅长:python、mysql、java
<p>改为使用<a href="https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset" rel="nofollow"><em>sets</em></a>:</p>
<pre><code>modes = frozenset([1,2,4,5,7,8,9])
start_modes = {1,2,5}
stop_modes = modes - start_modes
fast_modes = {2,7}
slow_modes = modes - fast_modes
</code></pre>
<p>这里<code>frozenset()</code>是<code>set()</code>的等价物,<code>tuple()</code>;一个不可变的类型。<code>start_modes</code>和<code>fast_modes</code>集使用<code>{...}</code>集文本表示法,生成一个可变的<code>set()</code>对象。您也可以始终使用<code>frozenset()</code>。在</p>
<p>集合只能包含唯一的元素,而不维护元素的顺序。您仍然可以将集合转换回元组,但对于您的问题,元组似乎是错误的数据类型。在</p>
<p>集合是可编辑的;您可以循环这些集合,但顺序取决于集合的插入和删除历史记录以及包含的值。在</p>
<p>如果order<em>很重要,请在<code>tuple()</code>调用中使用生成器表达式来生成值:</p>
^{pr2}$
<p>虽然在这里没有多大区别,但是如果您可以使<code>start_modes</code>和<code>fast_modes</code><code>set</code>或{<cd13>}对象,<code>not in</code>负成员身份测试会更快。在</p>