码迷,mamicode.com
首页 > 其他好文 > 详细

list操作

时间:2019-12-11 23:33:15      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:add   nts   val   app   rabl   append   迭代   调用   value   

In [7]: a= [1,2]   #定义一个list

In [8]: a+[3,4]      # 使用+操作
Out[8]: [1, 2, 3, 4]

In [9]: a
Out[9]: [1, 2]

In [10]: a.extend([3,4])   # 使用extend操作,其实是在修改a

In [11]: a                       # 打印a 
Out[11]: [1, 2, 3, 4]

In [12]: a.extend((5,6))   # 这里使用extend一个元组

In [13]: a                        # 打印
Out[13]: [1, 2, 3, 4, 5, 6]

 

再看下面的示例二

In [14]: a =[1,2]

In [15]: id(a)
Out[15]: 1801141280328

In [16]: a.extend([3,4])

In [17]: id(a)
Out[17]: 1801141280328

In [18]: c = a+[5,6]

In [19]: id(c)
Out[19]: 1801126648200

 

由示例2知: extend操作之后,对象还是那个对象 ,但+操作之后,对象就变化了.

由示例1知: extend操作即可传参是list类型,也可以是元组tuple类型, 因为extend其实是调用了基类MutableSequence中的魔法函数__iadd__, 以下是源码

 

    def __iadd__(self, values):
        self.extend(values)
        return self

 

 

  def extend(self, values):
        S.extend(iterable) -- extend sequence by appending elements from the iterable
        for v in values:
            self.append(v)

 

由源码可知:

(1)  return self , 所以我们示例中extend操作之后id值不变

(2)  extend(iterable)  , 所以只要是可迭代的对象都可以作为extend()函数的入参, 所以a.extend([3,4])可以, a.extend((5,6)) 也可以, a.extend({33,44})同样也可以

list操作

标签:add   nts   val   app   rabl   append   迭代   调用   value   

原文地址:https://www.cnblogs.com/z-qinfeng/p/12026399.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!