python基础 3 列表

133 阅读5分钟
变量用于存储单一数据:数值,对象 
如果存储多个数据:利用列表 
数组: c语言中: 可以存储多个数据,同一个数组中的所有元素必须是相同类型的数据 
列表:Python:可以存储多个数据,存储多种数据 
最常用的数据类型之一 

Python 没有类型的---对象类型 
int float str list 
列表是一个类 
列表的特点: 
    1. 可以存储多个数据,可以存储多种数据 
    2. 是一个可迭代对象 
    3. 支持索引操作 
  

一 创建列表

 1. 手工创建: 
     变量=[元素1,元素2...] 
     如果列表中的元素都是同一个类型,则称该列表为某类型列表 
     例如:a=[1,2,3] # ---整型列表 
     如果列表中元素不是同一种类型,则称该列表为混合列表 
     如果列表中的元素都是又一个列表,则称该列表为二维列表 
     如果列表中没有任何元素,则称该列表为空列表 [] 
 2. 利用构造方法: 
     1. list() 返回一个空列表 
     2. list(iterable) 根据可迭代对象创建列表 a=list('hehe') # ['h', 'e', 'h', 'e'] 
     3. 获得列表的元素的个数: len()---返回一个列表的长度(元素的个数) 
     

二 从列表获取元素

 1. 通过索引获取元素 索引:下标---下标从0开始的 
    列表的长度-1--->最大的索引值 
    如果索引值超出范围则会报错:IndexError 索引越界异常 
    语法: 列表名[索引值] 
    列表支持负数作为下标,负号代表方向,数值代表反向的位置(反向的位置是从-1开始算起) 
    l=[1,2,3,4,5,6,7,8,9]  
    l[4] #5 
    l[-4] #6 
 2. 遍历 
     将列表中所有的元素,全部访问一遍,不重复,不遗漏 
     访问:修改+读取+删除 
     for 循环 l=[1,2,3] 
     for i in l: 
         print(i) 
         

三 修改列表

通过下标操作直接修改 
l=[1,2,3] 
l[0]=99 
print(l) # [99,2,3] 

四 删除列表

1. 删除列表中的元素 
    1. del 变量名[下标] 
    2. clear():清空列表 
    3. remove(value) 从列表中删除value值,其中列表如果有多个value值,只删除第一个出现的值(下标最小), 如果value不再列表中,则抛出异常:ValueError 
    4. pop([index]): 删除并返回index下标的元素,如果index没有给出则取最后一个值,如果列表为空或下标越界 则抛出IndexError 
2. 删除一个列表 
    l=[1,2,3] 语法:del 列表名(指代变量) 
    del删除的是变量,并没有删除列表本身,当列表对象没有任何引用时,垃圾回收机制会将该列表回收(删 除) 
    

五 插入元素

1. append(obj) 
    向列表的末尾添加元素(obj) 
    只能一次添加一个元素 
2. extend(iterable): 
    从可迭代对象中将元素扩展到列表中 
    通过可迭代对象一次性添加多个元素 
3. insert(index,object): 
    在index前插入object 
    

六 列表的其他方法

1. copy(): 浅拷贝 
2. count(value): 返回value在列表中出现的次数 
3. index(value, [start, [stop]]):
    返回value在列表中出现的第一个下标,如果value不再列表中则抛出异常:ValueError 
    start:起始下标 能取到 
    stop:结束下标 取不到 
4. reverse() 原地翻转 

七 列表的切片

切片--分片 slice 用于拷贝新列表 可以截取(拷贝)出多个数据 
语法: 
    列表名[起始下标:结束下标] # 结束下标取不到 
    起始下标默认为:0 
    结束下标默认为:-1(能取到) 
简写形式: 
    如果起始下标不给出,默认从头开始截取 
    如果结束下标不给出,默认截取到最后 
    如果前后全部省略:全部都截取 
切片的高级应用 
切片可以接受3个参数 
语法: 
    列表名[起始下标:结束下标:步长] 
    切片的底层实现---不是索引操作 
l=[1,2,3,4,5,6,7,8,9] 
>>> l[0:-3] 
[1, 2, 3, 4, 5, 6] 
>>> l[-3:0] 
[] 
>>> l[-3:0:-1] 
[7, 6, 5, 4, 3, 2] 
>>> l 
[1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> l[:] 
[1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> l[3:] 
[4, 5, 6, 7, 8, 9] 
>>> l[3:8] 
[4, 5, 6, 7, 8] 
>>> l[3:9] 
[4, 5, 6, 7, 8, 9] 
>>> l[3:10] 
[4, 5, 6, 7, 8, 9] 
>>> l[3:100] 
[4, 5, 6, 7, 8, 9] 
>>> l[-1:-9:-1] 
[9, 8, 7, 6, 5, 4, 3, 2] 
>>> l[-1:-10:-1] 
[9, 8, 7, 6, 5, 4, 3, 2, 1] 
>>> l[-1:-100:-1] 
[9, 8, 7, 6, 5, 4, 3, 2, 1] 

八 支持的运算符

1. 比较运算符: 
    > < >= <= == != 
    比较规则:根据列表中相同下标的元素逐个进行比较 
    列表中的元素如果不是同一个类型,则无法比较 
    比较和长短无关 
2. 逻辑运算符 
    and or not 
3. 加法和乘法操作 
    表示拼接和重复 
4. 成员关系操作符 
    in/not in 

九 排序

排序规则 
    分析---程序归纳 
    排序:八大基本排序:直接插入排序,希尔排序(shell),选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序 
冒泡排序
    让列表中的元素,两个相邻的元素之间比较大小,如果不符合条件则更换两者的位置  
    list1=[5,4,3,2,1] 
    length=len(list1) 
    for i in range(1,length): #大轮数 
        for j in range(length-i): # 小轮数 
        # 比较大小 
            if list1[j]>list1[j+1]: 
                list1[j],list1[j+1]=list1[j+1],list1[j]
    print(list1) 
选择排序
    每次让同一个下标的元素和其他元素作对比 
    #选择 
    list1=[5,4,3,2,1] 
    length=len(list1) 
    for i in range(length-1): # 大轮 0,1,2,3
        for j in range(i+1,length): # 小轮 
        # 比较大小 
            if list1[i]>list1[j]: 
                list1[i],list1[j]=list1[j],list1[i] 
    print(list1) 

十 sort()

    sort是list的一个方法 
    1. sort(key=None, reverse=False) 
        key:排序规则,默认None(从小到大) 
        reverse:是否翻转 
        默认进行升序排序 
    2. 使用的排序方式: 
        Timsort排序:结合了归并排序(merge sort)+插入排序(insertion sort) 
        Python2.3版本开始引入,之前是归并排序 

十一 二维列表

列表可以存储多个数据,存储多种数据:列表可以存储列表 
一维列表:只有一层列表 
二维列表:一维列表中的一维列表 
列表的访问: 列表名[行坐标][列坐标]
    列表名[第一层元素下标][第二层元素下标] 
列表的遍历: 
    利用循环嵌套(双重循环) 
l=[[1,2,3], [4,5,6], [7,8,9]] 
print(l[1][1]) 
二维列表创建
    1. 手工创建 
        list1=[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
    2. 构造方法: 
        list(iterable) 
    3. 重复运算: 
        [[1,2,3]]*3 
    4. 拼接运算: 
        [[1,2,3]]+[[1,2,3]] 
    5. 推导式: 
    l=[[1,2,3] for i in range(3)] 
    #[[1, 2, 3], [1, 2, 3], [1, 2, 3]]