列表操作汇总

创建 添加 修改 删除
a=[] append() list[]= del()
list() + remove()
range() insert() pop()
推导式

列表中元素的排序(正序、倒序)
列表中元素的max min 元素的计数
二维列表与数据表格(多维数据表的打印)
索引与切片(正向、逆向、间隔跳)

形式

python中的列表使用[]括起,使用逗号隔开;
列表中可以为同一类型也可以为不同类型,也可以嵌套列表;
列表在内存中的表现为一个id存储对象,

  1. >>> a =[1,2,3,'b',[1, 2, 3]]
  2. >>> print(a)
  3. [1, 2, 3, 'b', [1, 2, 3]]
  4. >>> type(a)
  5. <class 'list'>

列表创建

  1. >>> list1= [0,1, 2] #定义列表式
  2. >>> list(range(5)) #利用range进行创建
  3. [0, 1, 2, 3, 4]
  4. >>> list2 = [x*x for x in range(4)] # 利用推倒式创建
  5. >>> list2
  6. [0, 1, 4, 9]

列表内容更改(给改变大小、长度、清空)

利用索引和切片进行相关操作

修改

  • 修改列表内的值可以通过索引更改所需要的值;
  • 由于索引所得出的为列表内元素,使用其不能进行清空操作,而切片可以得到一个列表,所以可以使用切片进行相关的清空操作
    1. >>> a[2]=5
    2. >>> a
    3. [1, 2, 5, 'b', [1, 2, 3]]
    4. >>> a[2] = []
    5. >>> a
    6. [1, 2, [], 'b', [1, 2, 3]]
    7. >>> a[2:3]=[]
    8. >>> a
    9. [1, 2, 'b', [1, 2, 3]]

增加

  • 使用append()函数在列表的末尾增加元素(id不变) ```python

    a =[1,2,3,’b’,[1, 2, 3]] a.append(5) a [1, 2, 3, ‘b’, [1, 2, 3], 5]

list1 = [1, 2, 3] list2 = [‘a’, ‘b’, ‘c’] id(list1) 1502000221056 list1.append(list2) list1 [1, 2, 3, [‘a’, ‘b’, ‘c’]] id(list1) 1502000221056 ```

  • 拼接操作

    • 使用 “+”合并列表(id变)

      1. >>> list1=[1,2,3]
      2. >>> list2 = ['a','b','c']
      3. >>> list3 = list1+list2
      4. >>> list3
      5. [1, 2, 3, 'a', 'b', 'c']
      6. >>> id(list1)
      7. 2337340075200
      8. >>> id(list2)
      9. 2337336906368
      10. >>> id(list3)
      11. 2337339948992
    • 拼接操作仅允许在切片的条件下进行操作,在索引的条件下无法进行。 ```python a =[3, ‘b’, [1, 2, 3]]

a[0]+a[2] Traceback (most recent call last): File ““, line 1, in a[0]+a[2] TypeError: unsupported operand type(s) for +: ‘int’ and ‘list’

a[:0]+a[2:] [[1, 2, 3]] a[:1]+a[2:] [3, [1, 2, 3]] ```

  • 同一类型的可以在索引的情况下,进行操作

数字进行运算;字符串相加得字符串;列表会得到一个新的列表。

  1. >>> a =[1,2,3,'b',[1, 2, 3]]
  2. >>> a[0]+a[1]
  3. 3
  4. >>> a[0]=[0,2,3]
  5. >>> a
  6. [[0, 2, 3], 2, 3, 'b', [1, 2, 3]]
  7. >>> a[0]+a[4]
  8. [0, 2, 3, 1, 2, 3]
  9. >>> a[1]='c'
  10. >>> a
  11. [[0, 2, 3], 'c', 3, 'b', [1, 2, 3]]
  12. >>> a[1]+a[3]
  13. 'cb'

使用”+”进行运算时,会重新生成新的列表.

  • 使用insert(使用该函数时,id也未发生改变)

    1. >>> list1 = [1, 2, 3]
    2. >>> id(list1)
    3. 2833914080576
    4. >>> list1.insert(0, 2)
    5. >>> list1
    6. [2, 1, 2, 3]
    7. >>> id(list1)
    8. 2833914080576

    删减

  • 使用切片进行操作,可以定点清除甚至清空

>>> a =[1,2,3,'b',[1, 2, 3]]
>>> a[0:2]
[1, 2]
>>> a[0:2]=[]
>>> a
[3, 'b', [1, 2, 3]]
  • pop函数(使用该函数时可以带删除的内容, pop函数参数为序列数)

    >>> list2
    [0, 1, 4, 9]
    >>> list2.pop(0)
    0
    >>> list2
    [1, 4, 9]
    
  • del函数

    >>> list2
    [1, 4, 9]
    >>> del(list2[0])
    >>> list2
    [4, 9]
    
  • remove函数(参数为从右往左第一个出现的内容)

    >>> list3 = [1, 2, 1, 2, 3]
    >>> list3.remove(1)
    >>> list3
    [2, 1, 2, 3]
    >>>
    

索引和切片

索引出来的类型与原列表中的类型一致

>>> a =[1,2,3,'b',[1, 2, 3]]
>>> a[4]
[1, 2, 3]
>>> b = a[4]
>>> b
[1, 2, 3]
>>> type(b)
<class 'list'>
>>> d = a[1]
>>> d
2
>>> type(d)
<class 'int'>

切片出来会出来新的列表

>>> c = a[0 :3]
>>> c
[1, 2, 3]

指定元素在指定区间的首出现时的索引值

index(value, [start, [end]])

>>> list = ['a', 'b', 'c', 'd']
>>> list.index('a')  # 指定元素在列表中第一次出现的索引值
0
>>> list1 = ['a', 'b', 'c', 'd', 'a']
>>> list1.index('a')    # 指定元素在列表中第一次出现的索引值
0
>>> list1.index('a', 1) # 'a'在指定区间[1:]中第一次出现的索引值
4
>>> list1.index('a', 1, 3) # 'a'在指定区间[1:3]中第一次出现的索引值
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    list1.index('a', 1, 3)
ValueError: 'a' is not in list
>>> list1.index('a', 1, 5) # 'a'在指定区间[1:5]中第一次出现的索引值
4

指定元素计数

count()无法进行指定区间的计数

>>> list1 = ['a', 'b', 'c', 'd', 'a']
>>> list1.count('a')
2

计数

>>> a =[1,2,3,'b',[1, 2, 3]]
>>> len(a)
5

排序

列表排序有三种方法,一种是调用列表函数:sort(),另一种是调用内置函数sorted(),还有一种迭代操作具体演示如下:

>>> list2 = [2, 5, 6, 1, 3, 7] 
>>> list2.sort() # 正序
>>> list2
[1, 2, 3, 5, 6, 7]
>>> list2.sort(reverse=True) #倒序
>>> list2
[7, 6, 5, 3, 2, 1]
>>> sorted(list2) #内置函数,但内置函数不改变原有函数而是新建一个函数
[1, 2, 3, 5, 6, 7]
>>> list2
[7, 6, 5, 3, 2, 1]
>>> >>> reversed(list2) #迭代操作后使用list()
<list_reverseiterator object at 0x0000019EC2FB38E0>
>>> list(reversed(list2))
[1, 2, 3, 5, 6, 7]
>>>

列表中最大值 最小值以及求和操作

max() min() sum()均为内置函数

>>> list2 = [2, 5, 6, 1, 3, 7]
>>> list2.max()
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    list2.max()
AttributeError: 'list' object has no attribute 'max'
>>> max(list2)
7
>>> min(lis2)
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    min(lis2)
NameError: name 'lis2' is not defined
>>> min(list2)
1
>>> sum(list2)
24