python学习(五)列表

#!/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)}
原文地址:https://www.cnblogs.com/tuhooo/p/7715643.html