List 列表 -------------------------------------------------------------- a = ['c', 'b', 'a'] a.sort() #排序 print(a)#['a', 'b', 'c'] -------------------------------------------------------------- 初始化 list1 = ['Google', 'Runoob', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; list3 = ["a", "b", "c", "d"]; ------------------------------------------------------------------------------------------ 支持字符 数字 字符串 列表嵌套 #!/usr/bin/python # -*- coding: UTF-8 -*- list = [ 'rongshui', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # 输出完整列表 print list[0] # 输出列表的第一个元素 print list[1:3] # 输出第二个至第三个元素 切片 print list[2:] # 输出从第三个开始至列表末尾的所有元素 print tinylist * 2 # 输出列表两次 print list + tinylist # 打印组合的列表 结果: ['rongshui', 786, 2.23, 'john', 70.2] rongshui [786, 2.23] [2.23, 'john', 70.2] [123, 'john', 123, 'john'] ['rongshui', 786, 2.23, 'john', 70.2, 123, 'john'] ------------------------------------------------------------------------------------------ >>>classmates=['MIchael','Bob','Trancy'] >>> len(classmates)#长度 3 >>> classmates[0]='rongshui'#替换 >>> classmates#全部输出 ['rongshui', 'Bob', 'Trancy'] >>> indexhou=len(classmates)-1#末尾索引 >>> classmates[-1]#末尾元素 >>>'Trancy' >>> classmates[indexhou]==classmates[-1] True >>> classmates.append('xuniu')#后增 >>> print(classmates) ['rongshui', 'Bob', 'Trancy', 'xuniu'] >>> classmates.insert(0,'linrui')#插入 >>> print(classmates) ['linrui', 'rongshui', 'Bob', 'Trancy', 'xuniu'] >>> classmates.pop()#后删除 'xuniu' >>> print(classmates) ['linrui', 'rongshui', 'Bob', 'Trancy'] >>> classmates.pop(0);print(classmates)#指定删除 'linrui' ['rongshui', 'Bob', 'Trancy'] ------------------------------------------------------------------------------------------ >>> L = []#空List >>> len(L) 0 -------------------------------------------------------------------------------- 删除列表元素 #!/usr/bin/python3 list = ['Google', 'nsci', 1997, 2000] print ("原始列表 : ", list) del list[2] print ("删除第三个元素 : ", list) 原始列表 : ['Google', 'nsci', 1997, 2000] 删除第三个元素 : ['Google', 'nsci', 2000] -------------------------------------------------------------------------------- 列表操作 len([1, 2, 3]) 3 长度 [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 叠加组合 ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复 3 in [1, 2, 3] True 元素是否存在于列表中 for x in [1, 2, 3]: print(x, end=" ") 1 2 3 迭代 -------------------------------------------------------------------------------- 嵌套列表 嵌套列表 使用嵌套列表即在列表里创建其它列表,例如: >>>a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b' -------------------------------------------------------------------------------- 列表函数: 1 len(list) 列表元素个数 2 max(list) 返回列表元素最大值 3 min(list) 返回列表元素最小值 4 list(seq) 将元组转换为列表 Python包含以下方法: 序号 方法 1 list.append(obj) 在列表末尾添加新的对象 2 list.count(obj) 统计某个元素在列表中出现的次数 3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 5 list.insert(index, obj) 将对象插入列表 6 list.pop([index=-1]]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 7 list.remove(obj) 移除列表中某个值的第一个匹配项 8 list.reverse() 反向列表中元素 9 list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序 10 list.clear() 清空列表 11 list.copy() 复制列表 ------------------------------------------------------------------------------------------ 将列表当做堆栈使用 列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如: >>> stack = [3, 4, 5] >>> stack.append(6) >>> stack.append(7) >>> stack [3, 4, 5, 6, 7] >>> stack.pop() ------------------------------------------------------------------------------------------ 将列表当作队列使用 也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。 >>> from collections import deque >>> queue = deque(["Eric", "John", "Michael"]) >>> queue.append("Terry") # Terry arrives >>> queue.append("Graham") # Graham arrives >>> queue.popleft() # The first to arrive now leaves 'Eric' >>> queue.popleft() # The second to arrive now leaves 'John' >>> queue # Remaining queue in order of arrival deque(['Michael', 'Terry', 'Graham']) 7 >>> stack [3, 4, 5, 6] >>> stack.pop() 6 >>> stack.pop() 5 >>> stack [3, 4] ------------------------------------------------------------------------------------------ 列表推导式 列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。 每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。 这里我们将列表中每个数值乘三,获得一个新的列表: >>> vec = [2, 4, 6] >>> [3*x for x in vec] [6, 12, 18] 现在我们玩一点小花样: >>> [[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 子句作为过滤器: >>> [3*x for x in vec if x > 3] [12, 18] >>> [3*x for x in vec if x < 2] [] 以下是一些关于循环和其它技巧的演示: >>> 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] >>> [x+y for x in vec1 for y in vec2] [6, 5, -7, 8, 7, -5, 10, 9, -3] >>> [vec1[i]*vec2[i] for i in range(len(vec1))] [8, 12, -54] 列表推导式可以使用复杂表达式或嵌套函数: >>> [str(round(355/113, i)) for i in range(1, 6)] ['3.1', '3.14', '3.142', '3.1416', '3.14159'] ------------------------------------------------------------------------------------------ 嵌套列表解析 Python的列表还可以嵌套。 以下实例展示了3X4的矩阵列表: >>> matrix = [ ... [1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12], ... ] 以下实例将3X4的矩阵列表转换为4X3列表: >>> [[row[i] for row in matrix] for i in range(4)] [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] 以下实例也可以使用以下方法来实现: >>> transposed = [] >>> for i in range(4): ... transposed.append([row[i] for row in matrix]) ... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] 另外一种实现方法: >>> transposed = [] >>> for i in range(4): ... # the following 3 lines implement the nested listcomp ... transposed_row = [] ... for row in matrix: ... transposed_row.append(row[i]) ... transposed.append(transposed_row) ... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] |
|