2017-03-18 3 views
0
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]) 

in diesem Code ein alle, wie eine Liste in eine andere Liste anhängen for-Schleife

[[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]] 

seperat Werte erhalten, aber ich brauche alle Werte in einer einzigen Liste

[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] 

wie diese .

Antwort

1

Sie brauchen nicht, dass store Funktion überhaupt; alles was es tut wickeln Sie b in c und drucken Sie dann c. Stattdessen schlage ich vor, b zu c direkt in divinding [sic] hinzuzufügen. Verwenden Sie append, um b und extend hinzuzufügen, um alle Elemente aus c, die von dem rekursiven Aufruf zurückgegeben werden, zu dividing(a) nach a.pop(0) hinzuzufügen.

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 

Das Ergebnis wird nun nicht direkt durch die Funktion gedruckt, aber zurückgegeben:

>>> 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]] 
0

definieren 'c' außerhalb der Speicherfunktion, zum Beispiel

c = [] 

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

Ausgang ist:

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]] 
+1

Beachten Sie, dass dieses lustige Ergebnisse liefern wird, wenn die Funktion mehr als einmal aufgerufen wird. –

Verwandte Themen