#!/usr/bin/python # 列表的学习, 列表的概念不陌生, 就是熟悉一下python中的列表是如何操作的 # 1. 序列的操作 L = [ 123, 'spam', 1.23] # 里面的元素不用一致 len(L) # 获取序列的长度, 和字符串一样, 所以我就想字符串内部是不是也是序列 L[0] # 通过位置来索引序列中的元素 L[:-1] # 分片 L + [4, 5, 6] # 通过加号操作生成一个新的序列, 而不是在L的末尾的内存处继续添加 # 2. 类型特定的操作 L.append('NI') # 在序列的末尾增加一个元素 L.pop(2) # 从中间弹出一个元素 # 所以这里列表是可变的 M = ['bb', 'aa', 'cc'] M.sort() # 对序列排序 M.reverse() # 翻转序列 # 边界检查 # 虽然列表没有固定的大小, 但是操作的时候超出边界会引起错误 # L[99] 这样的就会报错的 # 3. 嵌套 # python的列表支持任意的嵌套 M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] M[1] M[1][2] # 用了多个[]就表示要逐层深入解析 # 4. 列表的解析 col2 = [row[1] for row in M] # 我曹, 还可以这样 # col2 = [2, 5, 8], M没有变化 col3 = [row[1] + 1 for row in M] col4 = [row[1] for row in M if row[1] % 2 == 0] # 注意中操作只适用于小规模的数据, 如果是大规模的数据要用到其他的扩展包 diag = [M[i][i] for i in [0, 1, 2]] doubles = [c * 2 for c in 'spam'] # doubles = ['ss', 'pp', 'aa', 'mm'] # 列表解析在函数map和filter有更复杂的 G = (sum(row) for row in M) # 对行求和 list(map(sum, M)) # 在python 3.0中, 解析语法也可以生成集合和字典 {sum(row) for row in M} {i : sum(M[i]) for i in range(3)}