Python(列表)

  1. 创建空列表

    list1 = list()
    list2 = []
    

    快速创建列表的方式:

    #方法一
    a = []
    for i in range(1,10):
        a.append(i)
    print(a)
    #方法二
    b = list(range(1,10))
    print(b)
    #方法三
    c = [i for i in range(1,10)]
    print(c)
    

    [扩展]
    创建一个占用十个元素空间,却不包括任何有用内容的列表

    	list1 = [None]*10   
    	#结果:[None, None, None, None, None, None, None, None, None, None]
    
  2. 获取列表长度 len(列表名称) 或list.len(),也可用于字符串类型

    list1 = [1,2,3,4,5,6]
    len(list)
    
  3. 在列表末尾插入元素 append(obj)

    list1 = ['a', 'b', 'c']
    list1.append("d")
    
  4. 在列表中指定位置(索引)插入一个元素

    list1.insert(2,1)
    
  5. 清空列表列表

    list.clear()
    
  6. 复制列表 copy(),类似于 a[:]
    copy()属于浅拷贝,至拷贝内容 =属于深拷贝(值与地址一起拷贝)

    list1 = list.copy()
    

    【扩展】
    直接赋值:其实就是对象的引用(别名)。
    浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
    深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

    import copy
    a = [1, 2, 3, 4, ['a', 'b']] #原始对象
    
    b = a                #赋值,传对象的引用
    c = copy.copy(a)          #对象拷贝,浅拷贝
    d = copy.deepcopy(a)       #对象拷贝,深拷贝
      
    a.append(5)             #修改对象a
    a[4].append('c')          #修改对象a中的['a', 'b']数组对象
      
    print( 'a = ', a )
    print( 'b = ', b )
    print( 'c = ', c )
    print( 'd = ', d )
    
    以上实例执行输出结果为:
    a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    c =  [1, 2, 3, 4, ['a', 'b', 'c']]
    d =  [1, 2, 3, 4, ['a', 'b']]
    
  7. 统计某个元素在列表中出现的次数 count(obj)

    list1 = [0,2,0,5,0,1,2]
    list1.count(0)
    
  8. extend(seq) seq—列表,在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    【注】:必须追加一个列表

    list1.extend(list2)
    
  9. index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
    (1)如果查询元素在列表中不存在,会报错。所以查询时应加上安全判定

    list1.index(7)
    #ValueError: 7 is not in list
    

    (2)找出某个值第一个匹配项的索引位置

    list1.index(list2[1])
    

    (3)也可以指定范围内某元素的第一次出现的索引

    list1.index(1,1)
    
  10. pop(index) 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

    list1.pop()
    
  11. remove(obj) 函数用于移除列表中某个值的第一个匹配项。

    list1.remove(1)
    
  12. list.reverse()将列表中所有元素倒置

    list1.reverse()
    
  13. 将列表中的元素从小到大排序 sort()
    注:排序是要保证列表里元素的类型是一致的,字符串排序时首字母按照ASCII码表中的顺序排列
    格式1:列表.sort() ------按照从小到大排序(数字)

    a = [4,1,7,3,2]
    a.sort()
    print(a)
    #打印结果:[1, 2, 3, 4, 7]
    

    格式2:列表.sort(reverse=True) -----按照从大到小排序(数字)

    a = [4,1,7,3,2]
    a.sort(reverse=True)
    print(a)
    #打印结果:[7, 4, 3, 2, 1]
    

    格式3:列表.sort(key=函数) -----对值进行指定的函数处理之后在从小到大排序

    a = [41,16,33,6,11,52]
    def fun(n):
        return n % 10
    a.sort(key=fun)
    print(a)
    #打印结果:[41, 11, 52, 33, 16, 6]
    

    格式4:列表.sort(key=函数,reverse=True) ----对值进行指定的函数处理之后在从大到小排序

    a = [41,16,33,6,11,52]
    def fun(n):
        return n % 10
    a.sort(key=fun,reverse=True)
    print(a)
    #打印结果:[16, 6, 33, 52, 41, 11]
    
  14. 列表总结
    删除
    1.list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    2.list.remove(obj):移除列表中某个值的第一个匹配项
    3.list.clear() :清空元素
    4.del

    del name[2]   
    del name[:2]
    

    增加

    1. list.insert(index, obj):将对象插入列表中
    2. list.append(obj):在列表末尾添加新的对象
    3. list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

    切片
    1.list[起始位置:终止位置:幅度]:切片时取值范围是[起始值:终止值),当起始值>=终止值时,
    输出的是空的(字符串,列表,元组等)。

    a = [5, 3, 3, 4, 2, 2]
    b = a[0:3:2]
    print(b)      #结果:[5, 3]
    

    2**.list[start?step]** :当幅度省略时(幅度默认为1),切片只能正向截取(从索引小的位置截取到大的位置)

    a = [5, 3, 3, 4, 2, 2]
    b = a[-1:-3:-1]
    print(b)     #结果:[2, 2]
    
  15. 列表推导式

    variable = [out_exp_res for out_exp in input_list if out_exp == 2]
         out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
         for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
     if out_exp == 2:  根据条件过滤哪些值可以。
    

    1)简单的列表推导式
    格式:[变量 for 变量 in 列表]
    结果:遍历列表中的每个值,将每个值获取之后组成新的列表,可以对获取的值进行修改
    [变量可以其他操作 for 变量 in 列表]

    list1 = [i for i in range(1,10)]
    print(list1)
    list2 = [i*2 for i in range(1,10)]
    print(list2)
    

    2)带有判断条件的列表推导式
    格式:[变量 for 变量 in 列表 if 条件表达式]
    结果:遍历列表中的每个值,根据判断条件决定是否取出指定的值组成新的列表,可以对获取的值进行修改

    list3 = [i for i in list1 if i % 3 == 0]
    print(list3)
    

    3)多个列表的同时循环的列表推导式
    格式:[变量1+变量2 for 变量1 in 列表1 for 变量2 in 列表2]
    结果:同时遍历列表1和列表2中的每个值,将列表1中的每个值和列表2中的每个值进行运算得到新的列表。新的列表中元素个数=列表1中元素个数 * 列表2中的元素个数
    变量1和变量2可以进行其他操作,不一定非要+ 这只是demo

    list4 = [i+j for i in range(1, 10) for j in range(4, 0, -1) if i % 2 == 0 and j % 2 == 1]
    print(list4)
    

    4)带有判断条件的多个列表的同时循环列表推导式
    格式:[变量1+变量2 for 变量1 in 列表1 for 变量2 in 列表2 if 条件表达式]
    结果:同时遍历列表1和列表2中的每个值,根据判断条件将列表1中的值和列表2中的值进行运算,得到新的列表。新的列表数量由判断条件决定

    list5 = [i+j for i in range(1, 10) for j in range(4, 0, -1)]
    print(list5)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值