如何使用for循环将列表附加到另一个列表

时间:2017-03-18 14:28:57

标签: python list

 def divinding(a):
    b=[]
    c=[]
    a.sort()
    for i in a:
        if(i%a[0])==0:
            b.append(i)
        else:
            pass
    if(len(b)>2):
        store(b)
    else:
        pass
    if(len(a)>1):
        a.pop(0)
        divinding(a)

def store(b):
    c=[]
    c.append(b)
    print c
divinding([2, 11, 16, 12, 36, 60, 71, 17, 29, 144, 288, 129, 432, 993])

在此代码中单独获取所有值

[[2, 12, 16, 36, 60, 144, 288, 432]],[[12, 36, 60, 144, 288, 432]],[[16, 144, 288, 432]],[[36, 144, 288, 432]],[[144, 288, 432]]

但我需要一个列表中的所有值

[2, 12, 16, 36, 60, 144, 288, 432],[12, 36, 60, 144, 288, 432],[16, 144, 288, 432],[36, 144, 288, 432],[144, 288, 432]
像这样。

2 个答案:

答案 0 :(得分:1)

根本不需要store功能;所有它将b包裹到c然后打印c。相反,我建议直接在b [原文如此]中将c添加到divinding。使用append添加bextend,将递归调用返回的c中的所有元素添加到dividing(a)之后的a.pop(0)

def dividing(a):
    c = []
    a.sort()
    b = [i for i in a if i % a[0] == 0]
    if len(b) > 2:
        c.append(b)
    if len(a) > 1:
        a.pop(0)
        c.extend(dividing(a))
    return c

结果现在不是由函数直接打印,而是返回:

>>> result = dividing([2, 11, 16, 12, 36, 60, 71, 17, 29, 144, 288, 129, 432, 993])
>>> print result
[[2, 12, 16, 36, 60, 144, 288, 432], [12, 36, 60, 144, 288, 432], [16, 144, 288, 432], [36, 144, 288, 432], [144, 288, 432]]

答案 1 :(得分:0)

定义' c'在商店功能之外,例如

c = []

def store(b):
    c.append(b)

输出是:

c

Out[11]: [[2, 12, 16, 36, 60, 144, 288, 432],[12, 36, 60, 144, 288, 432],[16, 144, 288, 432],[36, 144, 288, 432],[144, 288, 432]]