python列表基础知识总结

1.列表创建函数list()
    list()--->创建一个空列表[]
    list(可迭代对象)--->使用可迭代对象创建一个列表:list("Chinese") list([1,2,3,4,5]) list(range(1,10))

2.列表的运算:

    + += * *=

    += 运算符的格式需要特别注意:
            绑定列表的变量 += 可迭代对象
            L += [1, 2, 3, 4]
            L += 'abcdef'
            L += range[1,10]
            L += ['123']----------->'123'作为整体的一个元素,添加到列表末尾

    关系运算(!= == >)
    成员运算符(in/not in)---->列表包含对象则返回True:“Alex” in   ["Alex","Thomas","Nore"]
    逻辑运算:and or not---->s = input(Please enter:)  or  'q'

3.列表切片:列表[切片slice] = 可迭代对象
    语法:a[起始:结束:步长]---->省略步长时,默认为1
    作用:创建新列表,复制列表([:]),切片赋值
    列表切片赋值(增删插改):
        ①一次修改多个元素:a[1:4] = [5,6,9]
        ②增加列表元素:a[2:] = [5,4,3,2,6,7...]
        ③在不替换任何列表元素的情况下,为列表插入新元素:a[2:2] = ["a","b"]
        ④删除列表元素:a[1:6] = []

4.常用列表函数:
    len():返回列表长度
    min():返回列表中的最小值
    max():返回列表中的最大值
    sum():返回列表中所有元素的和---->格式:sum(列表[,起始值])起始值缺省为0,即从0开始叠加

5.列表方法:help(list)
    index():得到列表中某个元素的索引(下标),在没找到时返回异常
    语法:L.index(value[,begin[,end]])
    
    count():得到列表中对应元素的个数
    语法:L.count(obj)
    
    append():向列表添加元素,返回值为None
    语法:L.append(obj)

    extend():向列表追加另一个列表,返回值为None
    语法:L.extend(可迭代对象)

    insert():向列表指定位置插入元素,返回值为None
    语法:L.insert(index,onj)

    pop():删除索引对应的元素,缺省时删除末尾元素。pop()方法存在返回值,返回值为弹出的元素
    语法:L.pop([index])

    remove():删除列表中第一次出现的value,返回值为None
    语法:L.remove(value)
    
    题外话:del语句删除列表元素---->del l[3]    del l[-2:-1]    del a    均是正确的表达

    copy():浅拷贝列表:只拷贝一层,不会拷贝深层对象,相当于L[::]
    语法:L.copy()

    reverse():反转列表的排列顺序,返回值为None--->还可以使用切片翻转排序:L[::-1]
    语法:L.reverse()

    sort():按顺序重新排列列表元素,返回值为None(sort()方法对列表的修改是永久性的,sorted()函数是临时的)
    语法:L.sort([reverse=False/True])---->缺省时reverse=False,排列顺序从小到大;reverse=True时,排列顺序从大到小

    clear():清空列表,相当于l[:] = []---->此时id(l)的值不变(l = []相当于重新绑定对象,id(l)的值也会变)

    语法:L.clear()

6.浅拷贝及深拷贝概念区分

1)浅拷贝:
        L = [3.1, 3.2]
        L1 = [1, 2, L]
        L2 = L1.copy() #浅拷贝
        print(L1)
        print(L2)
        L[0] = 3.14
        print(L1)  #[1,2,[3.14,3.2]]
        print(L2)  #[1,2,[3.14,3.2]]
    说明:浅拷贝是指在复制过程中,只复制一层变量,不会复制深层的变量绑定的对象的复制过程
2) 深拷贝:
        对所有可变对象进行层层复制,实现对象的各自独立。(Python中可变数据类型一共由4类)
        import copy
        L = [3.1, 3.2]
        L1 = [1, 2, L]
        L2 = copy.deepcopy(L1) #实现深拷贝
        print(L1)
        print(L2)
        L[0] = 3.14
        print(L1)  #[1,2,[3.14,3.2]]

        print(L2)  #[1,2,[3.1,3.2]]------>此层不受影响(包含深层列表时,为避免数据冲突,需要使用深拷贝)

    3)    注意点:
        L1 = [1, 2, 3, 4]
        L2 = L1------------>将2个变量绑定到同一个列表对象,并没有复制列表
        L2[0] = 100 则 L1[0] == 100
        L3 = L1.copy-------浅拷贝,只复制一层
        创建一个新的列表,但每个元素和原列表中的变量绑定的是同一个对象
        pop()存在返回值,remove() 和 append()均不存在返回值。pop实质是从列表里拿一个出来,拿出来之后还可以继续使用

7.字符串的2种方法 split 和 join :
    S.split(sep=None)  将字符串使用sep作为分隔符分割S字符串,返回分割后的字符串列表。缺省时使用空白字符串
    S.join(iterable) 用可迭代对象中提供的字符串,返回一个中间用S分割的字符串----->用字符串把可迭代对象粘成一个字符串
    示例:
        s = "Beijin is capital"
        L = s.split(' ')  #L = ['Beijin', 'is', 'capital']---->作为分隔符的符号会被删除,不会包含在生成的列表中
        L = ["C:", "windows", "System32"]
        s = '\\'.join(L)   #s=r'C:\windows\System32'-------->交互模式下输出的是'C:\\windows\\System32',是计算机中使用的样子,\\代表一个\

8.深拷贝  浅拷贝  不拷贝
    深拷贝:import copy
        L2 = copy.deepcopy(L)
    浅拷贝:
        L2 = L.copy()
        L2 = L[::]
    不拷贝:
        L2 = L #将两个变量绑定到了同一个对象,完全没有复制任何东西

猜你喜欢

转载自blog.csdn.net/geroge_lmx/article/details/80645888