2016-08-22 2 views
2

Betrachten Sie das folgende Stück Code.Merkwürdiges Verhalten von list.remove()

def foo(a): 
    b = [a+9*i+j for i in xrange(0,3) for j in xrange(0,3)] 
    return b.remove(a) 

Der Code funktioniert nicht. Es gibt eine null zurück. Aber wenn ich Folgendes tue, funktioniert es.

def foo1(a): 
    return [a+9*i+j for i in xrange(0,3) for j in xrange(0,3)] 

b = foo1(a) 
b = b.remove(a) # This works 

Warum schlägt das erste Snippet fehl, wenn das zweite funktioniert?

Antwort

5

.remove(...) gibt keinen Wert zurück. Nach offiziellen documentation

Sie haben vielleicht bemerkt, dass Methoden wie insert, remove oder sort, die nur die Liste ändern haben keine Rückgabewert gedruckt - kehren sie den Standard None. Dies ist ein Entwurfsprinzip für alle veränderbaren Datenstrukturen in Python.