zoukankan      html  css  js  c++  java
  • python3基础知识自学笔记2-列表

    列表(list)
    列表是一种无序的、可重复的数据序列,可以随时添加、删除其中的元素。
    列表页的每个元素都分配一个数字索引,从 0 开始
    列表使用方括号创建,使用逗号分隔元素
    列表元素值可以是任意类型,包括变量
    使用方括号对列表进行元素访问、切片、修改、删除等操作,开闭合区间为[)形式
    列表的元素访问可以嵌套
    方括号内可以是任意表达式
    
    创建列表
    >>> hello = (1,2,3)
    >>> li=[1,"2",[3,"a"],(1,3),"hello"]
    访问元素
    >>> print(li[3])
    (1, 3)
    >>> print(li[-2])
    (1, 3)
    >>> print(li[-3])
    [3, 'a']
    
    切片访问
    格式: list_name[begin:end:step] 
    begin 表示起始位置(默认为0),
    end 表示结束位置(默认为最后一个元素),
    step 表示步长(默认为1)
    >>> print(li)
    [1, '2', [3, 'a'], (1, 3), 'hello']
    >>> print(li[1:2])
    ['2']
    >>> print(li[:])
    [1, '2', [3, 'a'], (1, 3), 'hello']
    >>> print(li[2:])
    [[3, 'a'], (1, 3), 'hello']
    >>> print(li[1:-1:2])
    ['2', (1, 3)]
    
    访问内嵌 list 的元素:
    >>> li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ['a', 'b', 'c']]
    >>> print(li[1:-1:2][1:3])
    [3, 5] 
    >>> print(li[-1][1:3])
    ['b', 'c']
    >>> print(li[-1][1])
    b
    
    修改列表
    通过使用方括号,可以非常灵活的对列表的元素进行修改、替换、删除等操作。
    >>> li = [0, 1, 2, 3, 4, 5]
    >>> li[len(li) - 2] = 22
    >>> li
    [0, 1, 2, 3, 22, 5]
    >>> li[3] = 33
    >>> li
    [0, 1, 2, 33, 22, 5]
    >>> li[1:-1] = [9, 9]
    >>> li
    [0, 9, 9, 5]
    >>> li[1:-1] = []
    >>> li
    [0, 5]
    
    删除元素
    可以用 del 语句来删除列表的指定范围的元素。
    >>> li = [0, 1, 2, 3, 4, 5]
    >>> del li[3]
    >>> li
    [0, 1, 2, 4, 5]
    >>> del li[2:-1]
    >>> li
    [0, 1, 5]
    
    列表操作符
    + 用于合并列表
    * 用于重复列表元素
    in 用于判断元素是否存在于列表中
    for ... in ... 用于遍历列表元素
    >>> [1, 2, 3] + [3, 4, 5]
    [1, 2, 3, 3, 4, 5]
    >>> [1, 2, 3] * 2
    [1, 2, 3, 1, 2, 3]
    >>> 3 in [1, 2, 3]
    True
    >>> for x in [1, 2, 3]: print(x)
    ... 
    1
    2
    3
    
    列表函数
    len(list) 列表元素个数
    max(list) 列表元素中的最大值
    min(list) 列表元素中的最小值
    list(seq) 将元组转换为列表
    >>> li = [0, 1, 5]
    >>> max(li)
    5
    >>> len(li)
    3
    注: 对列表使用 max/min 函数,
    2.x 中对元素值类型无要求,
    3.x 则要求元素值类型必须一致。
    
    
    列表方法
    list.append(obj)
    在列表末尾添加新的对象
    list.count(obj)
    返回元素在列表中出现的次数
    list.extend(seq)
    在列表末尾一次性追加另一个序列中的多个值
    list.index(obj)
    返回查找对象的索引位置,如果没有找到对象则抛出异常
    list.insert(index, obj)
    将指定对象插入列表的指定位置
    list.pop([index=-1]])
    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    list.remove(obj)
    移除列表中某个值的第一个匹配项
    list.reverse()
    反向排序列表的元素
    list.sort(cmp=None, key=None, reverse=False)
    对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
    list.clear()
    清空列表 还可以使用 del list[:]、li = [] 等方式实现
    list.copy()
    复制列表 默认使用等号赋值给另一个变量,实际上是引用列表变量。
    
    列表推导式
    列表推导式提供了从序列创建列表的简单途径。
    通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,
    或者根据确定的判定条件创建子序列。
    每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 forif 子句。
    返回结果是一个根据表达从其后的 forif 上下文环境中生成出来的列表。
    如果希望表达式推导出一个元组,就必须使用括号。
    
    将列表中每个数值乘三,获得一个新的列表:
    >>> vec = [2, 4, 6]
    >>> [(x, x**2) for x in vec]
    [(2, 4), (4, 16), (6, 36)]
    
    对序列里每一个元素逐个调用某方法:
    >>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
    >>> [weapon.strip() for weapon in freshfruit]
    ['banana', 'loganberry', 'passion fruit']
    
    用 if 子句作为过滤器:
    >>> vec = [2, 4, 6]
    >>> [3*x for x in vec if x > 3]
    [12, 18]
    
    >>> vec1 = [2, 4, 6]
    >>> vec2 = [4, 3, -9]
    >>> [x*y for x in vec1 for y in vec2]
    [8, 6, -18, 16, 12, -36, 24, 18, -54]
    >>> [vec1[i]*vec2[i] for i in range(len(vec1))]
    [8, 12, -54]
    
    列表嵌套解析:
    >>> matrix = [
    ... [1, 2, 3],
    ... [4, 5, 6],
    ... [7, 8, 9],
    ... ]
    >>> new_matrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
    >>> print(new_matrix)
    [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
  • 相关阅读:
    UOJ299 游戏
    SPOJ-DivCnt2 Counting Divisors (square)
    Gym102331B Bitwise Xor
    POJ3495 Bitwise XOR of Arithmetic Progression
    LG5325 【模板】Min_25筛
    LOJ6229 这是一道简单的数学题
    BZOJ3601 一个人的数论
    LOJ138 类欧几里得算法
    Atcoder TypicalDPContest N~T
    莫队基础题
  • 原文地址:https://www.cnblogs.com/guiguxiaosheng/p/9438192.html
Copyright © 2011-2022 走看看