列表

一、列表简介

  列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。

  而且列表是有序的,有索引值,可切片,方便取值。

  • 列表是用[ ]来表示,用,隔开“,”是一个有序的数据结构,是从下标0开始的。
  • 列表的可以由各种元素组合(数字,字符串,bool类型),但是在实际开发中,都是使用同一种数据类型的。
  • 列表还可以嵌套其他的数据结构(列表,字典,元祖等)

二、定义列表

>>> my_list.

my_list.append(   my_list.count(    my_list.insert(   my_list.reverse(

my_list.clear(    my_list.extend(   my_list.pop(      my_list.sort(

my_list.copy(     my_list.index(    my_list.remove(   

2.1 创建列表的4种方式

1.直接创建

>>> my_list1 = [1, 2, 3, 4]

2.使用列表类的方法

>>> my_list2 = list([1,2,3,4])

3.使用列表进行转换(下面是把一个数组转换为列表)

>>> my_list3 = list((1,2,3,4))

4.列表推导式

>>> my_list4 = [i for i in range(1000) if i %2 == 0]

2.2 列表的运算符重载

  对于运算符重载,是类中的特殊方法。  相对应的数学表现方式,映射到 对于的方法。 

    比如 。 list_a + list_b 就会映射到__add__方法。这些都是代码定义的,我们在后面也可以实现这些东西。查看list的帮助文档,就会出现下面的方法

  __add__     a+b
  __iadd__    a+=b
  __mul__     a*b
  __imul__    a*=b

		str_list = ['c'*3]     # ['ccc']
		sr_list  = ['c']*3     # ['c','c','c']
		str_list = [['c']*3]   # [['c','c','c']] 

三、列表的索引与切片

3.1 索引

  列表是可序的,下标从0开始。可支持正向和反向取值:

    正向:第一个为0,第二个为1

    反向:最后一个-1,倒数第二个-2

>>> list1[0]
'a'
>>> list1[2]
'c'
>>> list1[-1]  #最后一个
'av'
>>> list1[-2]  #倒数第二个
'd'

3.2 切片

    L[start:[end:step]]  藏头露尾: 包含start 不包括end

      step支持负数。当step是负数的时候,start是靠右边的index,end是靠左边的index。

li[0:3]              #打印前3个索引的值
li[:3]               #同上
li[3:]               #打印第三个到末尾
li[::2]              #从头到尾,跳着打印
li[::-1]             #倒序打印
li[-2::-2]           #倒序从倒数第二个向前取值,每隔2个取一次值
li[5:0:-2]           #倒序从索引5向前取值,每隔2个取一次值    

四 、列表的增、删、改、查

4.1  增

  append、insert、extend学会看帮助文档:

 append(...)
       L.append(object) -> None -- append object to end
    追加一个元素到末尾,返回值为None
    str_list.append('f') insert(...) L.insert(index, object) -- insert object before index
    
insert(index, obj)插入元素,index为要插入的索引位置,obj为插入的值。
    str_list.insert(2,'g')

 extend(...)
       L.extend(iterable) -> None -- extend list by appending elements from the iterable
    extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)即迭代追加
    a = [1,2,3]
    b = ['a','b','v']
    a.extend(b)

4.2 删除

方法1:pop 

    L.pop([index]) -> item -- remove and return item at index (default last).

    Raises IndexError if list is empty or index is out of range.

>>> list1.pop()         #无参数,删除最后一个
'av'
>>> list1.pop(3)        #按照索引删除
'd'    

方法2:remove

    L.remove(value) -> None -- remove first occurrence of value.

    Raises ValueError if the value is not present.

  移除列表中某个值的第一个匹配项,无返回值.不存在则报错

>>> list1.remove('a')

方法3:del python内置函数

  功能1: 删除整个列表  del list1

  功能2:按照索引或切片删除

    del list1[1]

    del list1[1:3]

  功能3:按照步长删元素

    del list1[::2]

方法4:clear 

  删除列表的所有元素,无返回值

    list1.clear()

4.3 修改 

  按照索引修改: a[1] ='b'

  按照切片修改:a[1:3]  =[1,2]  注意切片长度需要和后面列表的长度相等

4.4 查

  查列表的长度:

      1.    list1.count()

      2.   len(list1)

     使用索引和切片的方式查看:  

      查看上文的

  根据value来找索引:

    list1.index('hui')

五、其他方法

  列表方法还剩下三个:sort ,reverse,copy

  sort    

>>> li = [2,5,23,21,4,1]
>>> li.sort()                   #默认排序是从小到大 
>>> li
[1, 2, 4, 5, 21, 23]    
=================================================
>>> li = [2,5,23,21,4,1]
>>> li.sort(reverse=True)  #修改排序方式,变成从大到小
>>> li
[23, 21, 5, 4, 2, 1]

  reverse

    反向排序

>>> li = ['楼会',1,2,'']
>>> li.reverse()
>>> li
['', 2, 1, '楼会']
========================
li[::-1] # 也可以实现反向排序

  copy

  浅拷贝

    关于浅拷贝的内容后续会深入,这里暂时不介绍

原文地址:https://www.cnblogs.com/louhui/p/8799591.html