代码一:
def test(l):
s = [1,2,3]
for i in range(len(s)):
for st in l:
st = st + [s[i]]
l.append(st)
return l
if __name__ == "__main__":
nums = [[],]
rres = test(nums)
print(rres)
输出:报错 MemoryError
代码二:
def test(l):
s = [1,2,3]
for i in range(len(s)):
for st in l[:]:
st = st + [s[i]]
l.append(st)
return l
if __name__ == "__main__":
nums = [[],]
rres = test(nums)
print(rres)
输出:[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
表明:第一种相当于会在列表继续追加,导致for循环爆栈,第二种首先会提出所有元素。