• Python中的列表操作


    Python的列表操作可谓是功能强大且方便(相对于Java)
    简单、常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子

    添加
    # 追加到结尾(append)
    li = [1, 2, 3, 4, 5]
    li.append(6)
    print('li = %s' % li)
    # 输出:li = [1, 2, 3, 4, 5, 6]
    
    # 追加一个列表(extend)
    li2 = ['a', 'b', 'c', 'd', 'e']
    li.extend(li2)
    print('li = %s' % li)
    # 输出:li = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', 'e']
    
    # 列表和列表也可以做加法
    li_plus = li + li2
    print('li_plus = %s' % li_plus)
    # 输出:li_plus = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']

    删除
    # 删除列表中的元素
    li = [1, 2, 3, 4, 5]
    li.remove(3)
    print('li = %s' % li)
    # 输出:li = [1, 2, 4, 5]
    # 根据索引删除元素 del li[3] print('li = %s' % li) # 输出:li = [1, 2, 4]
    截取(又叫切片操作)
    格式: [start:end:step] 。记住这个格式后你就可以发挥想象了
    li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # 每隔两个元素取一个 li2 = li[::2] print('li2 = %s' % li2) # 输出:li2 = [0, 2, 4, 6, 8, 10] # 最后一个元素 element = li[-1] print('element = %s' % element) # 输出:element = 10 # 拷贝(拷贝后是一个新对象) li2 = list(li) print('li2 = %s' % li2) # 输出:li2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    提取并删除(pop)
    li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    # 提取并删除最后一个元素
    li.pop()    # 等同于 li.pop(-1)
    print('li = %s' % li)
    # 输出:li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    # 提取并删除第一个元素(或第n个元素)
    li.pop(0)
    print('li = %s' % li)
    # 输出:li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    排序
    # 正序排列
    li = [3, 1, 5, 8, 0, 9, 2, 6, 7, 4]
    li.sort()
    print('li = %s' % li)
    # 输出:li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    # 倒序
    li = [3, 1, 5, 8, 0, 9, 2, 6, 7, 4]
    li.sort(reverse=True)
    print('li = %s' % li)
    # 输出:li = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    
    # 翻转(不是倒序排列)
    li = [3, 1, 5, 8, 0, 9, 2, 6, 7, 4]
    li.reverse()
    print('li = %s' % li)
    # 输出:li = [4, 7, 6, 2, 9, 0, 8, 5, 1, 3]

    列表解析

    根据已有列表,高效创建新列表的方式
    格式: [expression for iter_val in iterable] 
    # 列表中的每一项取平方
    li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    li2 = [i**2 for i in li]
    print('li2 = %s' % li2)
    # 输出:li2 = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    # 只有大于5的数才取平方。表达式也可以是if语句
    li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    li2 = [i**2 if i > 5 else i for i in li]
    print('li2 = %s' % li2)
    # 输出:li2 = [0, 1, 2, 3, 4, 5, 36, 49, 64, 81]
    格式: [expr for iter_var in iterable if cond_expr] 
    # 只取非None的元素
    li = [0, 1, 2, 3, 4, 5, None, 6, 7, 8, 9]
    li2 = [i for i in li if i is not None]
    print('li2 = %s' % li2)
    # 输出:li2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    格式: [expr for iter_var in iterable for var in iter_var] 
    # 展开一个二维列表
    li = [[0, 1, 2], [3, 4, 5, 6], [7, 8, 9]]
    li2 = [j for i in li for j in i]
    print('li2 = %s' % li2)
    # 输出:li2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    连接列表中的元素(join)
    li = ['aaa', 'bbb', 'ccc', 'ddd']
    li2 = ', '.join(li)
    print('li2 = %s' % li2)
    # 输出:li2 = aaa, bbb, ccc, ddd
     
  • 相关阅读:
    luogu P3327 [SDOI2015]约数个数和
    生成函数
    luogu P4318 完全平方数
    SP5971 LCMSUM
    luogu P2522 [HAOI2011]Problem b
    UOJ #82. 【UR #7】水题生成器
    CF1147F Zigzag Game
    CF1106F Lunar New Year and a Recursive Sequence
    1114: 逆序
    1113: 递归调用的次数统计(函数专题)
  • 原文地址:https://www.cnblogs.com/qhlblog/p/7986411.html
Copyright © 2020-2023  润新知