我想知道像[[]这样的python函数中的列表参数

时间:2019-09-04 08:48:14

标签: python python-3.x

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时,结果为[[], [], [], []]

2 个答案:

答案 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]