快乐的老鼠 发表于 2018-8-4 08:01:42

python中的列表操作

  列表:(list)
  容器类型:某个对象包含对其它对象的引用,则将其称为容器。
  列表可以包含任何种类的对象(数字、字串、甚至嵌套其他列表,可以嵌套元组)
  内部包含:任意对象的有序集合,通过索引访问其中的元素,可变对象,支持异构(包含多种不同的元素),任意嵌套
  

支持在原处修改:  列表的可变表现为:其内部的每一个元素,存储在列表中不是对象本身,而是对象的引用,其修改其实是修改的引用,而不是真正的修改了内部的某个对象。
  

  使用[]创建列表
  

  >> list1 = ["This","is","a","pig"]
  >> print list1
  This
  >> print list1
  T

  列表和元组并不真正存储数据而是存放的对象引用!
  解释:
  ["this","is","a","pig"]
  这里并不是存放了"this",而是在内存中找个了地方存放的"this",只是把"this"的存储的位置存放在这个列表当中。

  ---列表的异构:
  In : list =
  In : print list
  
  ---嵌套的列表:
  In : list2 = [,['a','b']]
  In : print list2
  [, ['a', 'b']]
  ---列表的修改
  In : list2 =
  In : print list2
  
  In : list2 = 888
  In : print list2
  
  ---删除指定的元素
  In : list2
  Out:
  In : del(list2)
  In : print list2
  
  ---新增一个元素(append方法) 在最后指定附件元素
  In : list2 =
  In : print list2
  
  In : list2.append(5)
  In : print list2
  
  能不能附加多个元素?附加一个列表进来
  In : print list2
  
  In : list3 = ['x','y','z']
  In : list2.append(list3)
  In : print list2
  ]
  注意:这里是把这个列表当作一个元素附加进来的。
  ---extend 方法
  extend list by appending elements from the iterable
  通过附加迭代元素来扩展列表
  In : list1 =
  In : list2 = ['x','y','z']
  In : list1.extend(list2)
  In : print list1
  
  是把两个列表合并在一起了
  ---index方法(返回字符,第一次出现的索引编号)
  In : list1 =
  In : list1.index(2)
  Out: 1
  --- insert 方法(在指定的元素前面添加元素)
  In : list =
  In : list.insert(2,'xyz')
  In : print list
  
  ---pop方法(弹出列表中的元素,默认是最后一个元素,按照索引删除,而remove是按照值删除的)
  In : list
  Out:
  In : list.pop()
  Out: 4
  In : list.pop()
  Out: 3
  In : list
  Out:
  ----remove 方法 (删除列表中指定的元素,安装值来删除)
  In : list =
  In : list.remove(3)
  In : print list
  
  * 列表相加会有什么效果呢? ***
  list1 + list2:合并两个列表,生产一个新列表,原列表不会改变
  list1 * N :重复list1 N次,生产新列表

  >> list1 =
  >> list2 = ['x','y','z']
  >> list1 + list2
            ----> 返回了新的列表
  >> print list1
  
  >> print list2
  ['x', 'y', 'z']
  >> list1
  
  >> list1 * 3
  

  in 操作符:成员关系判断符
  判断一个元素,是不是在一个列表当中,在返回true,否则返回false用法:item in container
  not in也类似

  >> list1
  
  >> 2 in list1
  True
  >> 'x' in list1
  False

  在切片级别的修改替换的是元素

  >> list1
  
  >> list1
  
  >> list1 = ['x','y','z']
  >> list1
  

  ***** 列表的复制 ****
  (1)轻度copy

  >> list1 =
  >> list2 = list1
  >> list1.append(4)
  >> print list1
  
  >> print list2
  

  为什么会出现这种情况?
  因为它们指向了同一个内存对象,不是真正执行了复制


  >>>  140325613007360

  >>>  140325613007360
  >>

  (2)使用list[:] 方式复制列表

  >> list1 =
  >> list3 = list1[:]
  >> print list3
  
  >> list1.append(5)
  >> print list1
  
  >> print list3
  

  >>>  140325612904744

  >>>  140325613007648

  (3)通过内置库copy复制列表
  import copy
  copy.deepcopy
  Deep copy operation on arbitrary Python objects.
  对任意Python对象进行深度复制操作。

  >> list1
  
  >> import copy
  >> list1
  

  >>>  140325612904744
  >> list2 = copy.deepcopy(list1)
  >> print list2
  

  >>>  140325613030936

页: [1]
查看完整版本: python中的列表操作