一、列表

  列表:两边是中括号,中间每个元素之间以“,”相隔 ,中间的元素可以是数字、字符串、元组、列表、字典         例:a  = ['a',1,[2,3],(1,2),{1:2}]

  直接赋值:只是传递对象的引用,原始列表发生改变时,被赋值的列表b也会改变



>>> a = [1,[2,3,4]]
>>> b = a
>>> a,b
([1, [2, 3, 4]], [1, [2, 3, 4]])
>>> a.append(5)
>>> a,b
([1, [2, 3, 4], 5], [1, [2, 3, 4], 5])

    >>> a[1].append(6)
 >>> a,b
 ([1, [2, 3, 4, 6], 5], [1, [2, 3, 4, 6], 5])



  浅拷贝:只拷贝父对象,不拷贝子对象,因此当原始列表的父对象和子对象改变时,被赋值的列表b的子对象会改变父对象不会改变



>>> c = a.copy()
>>> a,c
([1, [2, 3, 4], 5], [1, [2, 3, 4], 5])
>>> a.append(7)
>>> a,c
([1, [2, 3, 4], 5, 7], [1, [2, 3, 4], 5])
>>> a[1].append(6)
>>> a,c
([1, [2, 3, 4, 6], 5,7], [1, [2, 3, 4, 6], 5])
注:红色代表子对象



  深拷贝:copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象



>>>import copy 
>>> c = copy.deepcopy(a) 
>>> a, c 
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]}) 
>>> a[1].append(5) 
>>> a, c 
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})



  

  索引:根据索引查找元素



>>> age_list = [18,15,19]
>>> age_list[0]
18



  切片:截取需要的元素



>>> age_list[0:2]
[18, 15]



  长度:列表元素的个数



>>> len(age_list)
3



  循环:循环输出列表里的元素



age_list = [18,15,19]
for item in age_list:
    print(item)



  列表内部提供的其它功能:   

    append(self, p_object):在列表末尾添加对象

      输入:p_object()需要添加的对象

      功能:在列表末尾添加对象

      输出:无



>>> age_list = [12,13,14]
>>> age_list.append(15)
>>> age_list
[12, 13, 14, 15]



    clear(self):清空

      输入:无

      功能:清空列表

      输出:无



>>> l1 = age_list
>>> l1
[12, 13, 14, 15]
>>> l1.clear()
>>> l1
[]



    copy(self):浅拷贝,复制列表的父对象,不复制子对象

    count(self, value):查询value参数在列表中的个数

    extend(self, iterable):扩展列表元素

      输入:iterable是一个对象可以是字符串、列表、字典、元组

      功能:将iterable中的元素一个个添加到列表尾部

      输出:无



>>> a
[1, [2, 3, 4, 6], 5, 1]
>>> d = '12345'
>>> a.extend(d)
>>> a
[1, [2, 3, 4, 6], 5, 1, '1', '2', '3', '4', '5']



index(self, value, start=None, stop=None):查询value参数的位置
      输入:value为要查找的值
      功能:根据值查找
      输出:若找到则输出第一次(左边)出现的位置,否则报错



>>> a
[1, 2, 3, 1]
>>> a.index(1)
0
>>> a.index(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 0 is not in list



     insert(self, index, p_object):插入

        输入:index索引号,p_object要插入的对象

        功能:在索引号前插入一个对象

        输出:无



>>> a
[1, 2, 3, 1]
>>> a.insert(1,'a')
>>> a
[1, 'a', 2, 3, 1]



pop(self, index=None):删除(根据索引)   等于    del  list[index]
      输入:index索引号
      功能:根据索引号删除列表里的元素,默认删除最后一个
      输出:输出删除的元素,若列表为空或索引超过列表长度就会报错



>>> a
[1, 'a', 2, 3, 1]
>>> a.pop(1)
'a'
>>> a.pop(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range



remove(self, value):删除(根据对象)
      输入:要删除的对象
      功能:根据值删除列表元素,若有多个value值,则删除左边第一个value
      输出:无(若值不存在则报错)



>>> a
[1, 2, 3, 1]
>>> a.remove(1)
>>> a
[2, 3, 1]



reverse(self):将列表倒序
      输入:无
      功能:将列表里元素的顺序反过来
      输出:无



>>> a
[2, 3, 1]
>>> a.reverse()
>>> a
[1, 3, 2]



  

二、元组

  元组:两边是小括号,中间元素以“,”隔开,元素可以是数字、字符串、元组、列表、字典         例:a  = ('a',1,[2,3],(1,2),{1:2}) 

      索引:不同索引号对应不同元素

    例 :a = (1,2,3)

        a[0] = 1, a[1] = 2, a[2] = 3

  切片:截取指定范围的元素

    例:a = (1,2,3)

a[0:1] = (1,)  ,  a[0:2] = (1,2)       注:当元组只有一个元素时后面一定要加逗号才表示元组

长度:表示元组的长度

    例:a = (1,2,3)

      len(a) =  3

  循环:使用循环遍历元组

    例: for item in a

  内置功能:

    count(self, value):同列表count函数,计算value参数在元组里的个数

    index(self, value, start=None, stop=None): 输出指定范围第一个(左边)value参数的位置

 

三、元组和列表区别

    1、元组不可以添加或删除元素,列表可以

    2、元组只有一个元素时一定要以逗号结尾,列表不需要