Why does [].append() not work in python?

后端 未结 3 1778
耶瑟儿~
耶瑟儿~ 2020-12-07 01:11

Why does this work -

a = []
a.append(4)
print a

But this does not -

print [].append(4)

The output in se

相关标签:
3条回答
  • 2020-12-07 01:49

    The append method has no return value. It changes the list in place, and since you do not assign the [] to any variable, it's simply "lost in space"

    class FluentList(list):
        def append(self, value):
            super(FluentList,self).append(value)
            return self
    
        def extend(self, iterable):
            super(FluentList,self).extend(iterable)
            return self
    
        def remove(self, value):
            super(FluentList,self).remove(value)
            return self
    
        def insert(self, index, value):
            super(FluentList,self).insert(index, value)
            return self 
    
        def reverse(self):
            super(FluentList,self).reverse()
            return self
    
        def sort(self, cmp=None, key=None, reverse=False):
            super(FluentList,self).sort(cmp, key, reverse)
            return self
    
    li = FluentList()
    li.extend([1,4,6]).remove(4).append(7).insert(1,10).reverse().sort(key=lambda x:x%2)
    print li
    

    I didn't overload all methods in question, but the concept should be clear.

    0 讨论(0)
  • 2020-12-07 01:53

    The method append returns no value, or in other words there will only be None

    a is mutable and the value of it is changed, there is nothing to be returned there.

    0 讨论(0)
  • 2020-12-07 02:06

    append returns None.

    from your example:

    >>> print a.append(4)
    None
    
    0 讨论(0)
提交回复
热议问题