擅长:python、mysql、java
<p>我认为你的两种方法是不相等的。你知道吗</p>
<p>方法二是“在计算列表之后扩展<code>set1</code>”。因此,方法2的等效值如下所示:</p>
<pre><code>set1 = [[]]
num = [1,2,3]
for n in num:
tmp = []
for s in set1:
tmp += [ s + [n] ]
set1 += tmp
print(set1)
</code></pre>
<p>你为什么接近我?它不是挂起,而是永远循环,因为你在遍历它的同时扩展了你的列表。你知道吗</p>
<pre><code> for s in set1:
set1 += [ s + [n] ]
</code></pre>
<p>每次你得到<code>set1</code>的下一个元素,你的<code>set1</code>就会变长。你知道吗</p>
<p>在遍历元素时更改元素确实是个坏主意。别那么做。像伪代码那样创建中间变量更安全、更清晰。你知道吗</p>