#!/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)}