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 之后跟一个表达式,然后有零到多个 for 或 if 子句。 返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。 如果希望表达式推导出一个元组,就必须使用括号。 将列表中每个数值乘三,获得一个新的列表: >>> 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]]