pset = []
def powe(a):
powehelp(a,0)
def powehelp(a, ind):
if len(a) == ind:
pset.append(a)
return
powehelp(a[:], ind+1)
a.pop(ind)
powehelp(a[:],ind)
powe([1,2,3])
print(pset)
此代码创建其子集,在此代码中,我想知道为什么我不能使用powehelp(a, ind+1)
而不是powehelp(a[:], ind+1)
吗?
我知道a[:]
意味着获取列表a
的所有值。
使用a
时,结果为[[], [], [], []]
。
答案 0 :(得分:0)
您的powehelp
函数使用pop
,这意味着它将更改给定的列表。
如果将a
传递给它,则a
会被更改,并且显然以空结尾。
a[:]
创建a
的副本。如果您将a[:]
传递到powehelp
,则原始列表a
不会受到影响。
答案 1 :(得分:0)
给定的a
本身就是一个列表,因此将列表追加到列表中将构成一个嵌套列表。
a = [1, 2, 3]
b = []
b.append(a)
b
[[1, 2, 3]]
pset.append(a)
插入列表a
到列表pset
的尾部时,结果是嵌套列表。如果我正确理解了您的要求,那么您正在寻找合并列表的方法,例如:
c = [4, 5, 6]
a + c
[1, 2, 3, 4, 5, 6]