序列--列表

序列是一种数据存储方式,用来存储一系列的数据。

序列中存储的是对象的地址,而不是对象的值。python中常用的序列结构有:字符串、列表、元组、字典、集合

例: 定义一个序列 a =[10,20,30,40],在内存中的存储方式

列表

  用于存储任意数目,任意类型的数据集合

  列表中元素可以各不相同,可以是任意类型

  如 :a=[12,"abc",True]

列表对象的常用方法汇总

  

 Python中的列表大小可变,根据需要随时增加或缩小

列表的创建

  基本语法[ ]创建

>>> a = [10,20,"abc","hahaha"]
>>> a = [] #创建一个空的列表对象

  list()创建

>>> a = list()
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = list("python")
>>> a
['p', 'y', 't', 'h', 'o', 'n']

  range ()创建整数列表

  range([start,] end [,step])

  start:可选,默认为0

  end:必选,表示结尾数字

  step:可选,表示步长,默认为1

 a = [x*2 for x in range(100) if x%9 ==0]
>>> a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

列表元素的增加和删除

  append()方法

  原地修改列表对象是真正的列表尾部添加新的元素,速度最快,推荐使用

>>> a = [20,40]
>>> a.append(50)
>>> a
[20, 40, 50]

  +运算符操作

  创建新的列表对象;将原列表元素依次复制到新列表对象中。会涉及大量的复制操作,不建议使用

>>> a = [20,40]
>>> id(a)
2283134467328
>>> a = a+ [50]
>>> id(a)
2283134467584

  extend()方法

  将所有元素添加到本列表的尾部,属于原地操作,不创建新的对象

>>> a = [20,40]
>>> id(a)
2283134467328
>>> a.extend([50,60])
>>> id(a)
2283134467328

  insert()插入元素

  可以将元素插入到列表对象的任意指定位置。会让插入位置后面的所有元素进行移动,影响处理速度。设计大量元素时,尽量避免使用。类似发生这种移动的函数有remove()  pop()  del()  

>>> a = [10,20,30]
>>> a.insert(2,100)
>>> a
[10, 20, 100, 30]

  乘法扩展

>>> a = ["Python",12,True]
>>> b = a *3
>>> b
['Python', 12, True, 'Python', 12, True, 'Python', 12, True]

列表元素的删除

  del删除

    删除列表指定位置的元素(本质:列表的拷贝)

>>> a = [10,20,30]
>>> del a[1]
>>> a
[10, 30]

  pop()方法

    pop()删除并返回指定元素位置,如果未指定位置则默认操作列表最后一个元素

>>> a = [10,20,30,40,50,60]
>>> a.pop()
60
>>> a
[10, 20, 30, 40, 50]
>>> a.pop(2)
30
>>> a
[10, 20, 40, 50]

  remove()方法

  删除首次出现的指定元素,若不存在该元素则抛出异常

>>> a = [10,20,30,40,50,20,30,20,30,40]
>>> a.remove(20)
>>> a
[10, 30, 40, 50, 20, 30, 20, 30, 40]
>>> a.remove(100)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>>

列表元素的访问和计数

  通过索引直接访问元素

>>> a = [10,20,30,40,50,20,30,20,30,40]
>>> a[2]
30
>>> a[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

  index()获得指定元素在列表中首次出现的索引

>>> a = [10,20,30,40,50,20,30,20,30,40]
>>> a.index(20)
1
>>> a.index(20,3)
5

  count()获得指定元素在列表中出现的次数

>>> a = [10,20,30,40,50,20,30,20,30,40]
>>> a.count(20)
3

  len()返回列表的长度

>>> a=[10,20,30]
>>> len(a)
3

成员资格的判断

判断列表中是否存在指定的元素,我们可以使用count()方法,返回0则表示不存在,返回大于0则表示存在。但是,一般我们会使用更加简洁的关键字 in 来判断,直接返回True 或 False

>>> a = [10,20,30,40,50,20,30,20,30,40]
>>> 20 in a
True
>>> 100 not in a
True

切片操作slice

切片slice操作可以让我们快速提取子列表或修改。标准格式:

  [起始偏移量start:终止偏移量end[:步长step]]

  典型操作

  

   其它操作(三个量为负数)的情况

  

 列表的遍历

>>> a = [10,20,30,40,50,20,30,20,30,40]
>>> for x in a :
...     print(x)
...
10
20
30
40
50
20
30
20
30
40
View Code

列表排序

修改原列表,不新建新的列表的排序

>>> a = [2,1,3,4]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a = [2,1,3,4]
>>> id(a)
2052279436736
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> id(a)
2052279436736
>>> a.sort(reverse=True)
>>> a
[4, 3, 2, 1]
>>> import random
>>> random.shuffle(a)
>>> a
[2, 4, 1, 3]
>>> id(a)
2052279436736

建新列表的排序

>>> a = [2,1,4,3]
>>> a = sorted(a)
>>> a = [2,1,4,3]
>>> id(a)
2052279436544
>>> a = sorted(a)
>>> a
[1, 2, 3, 4]
>>> id(a)
2052279436736
>>> a = sorted(a,reverse=True)
>>> a
[4, 3, 2, 1]
>>> id(a)
2052279436544

reversed()返回迭代器

内置函数也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象

>>> a = [2,1,4,3]
>>> c = reversed(a)
>>> c
<list_reverseiterator object at 0x000001DDD5621A30>
>>> list(c)
[3, 4, 1, 2]
>>> list(c)
[]

其它方法

>>> a = [2,1,4,3]
>>> max(a)
4
>>> min(a)
1
>>> sum(a)
10

多维列表

二维列表

 源码:

  a = [

      ["高小一",18,30000,"北京"],

      ["高小二",19,20000,"上海"],

      ["高小五",20,10000,"深圳"]

    ]

原文地址:https://www.cnblogs.com/shengtudai/p/13568992.html