List 解析
Python 对 list 进行解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一个函数,从而将一个 list 映射为另一个 list。
>>> li = [1, 9, 8, 4]
>>> [elem*2 for elem in li]#对每个元素均执行如下操作:首先临时将其值赋给变量 elem,然后 Python 应用函数 elem*2 进行计算,最后将计算结果追加到要返回的 list 中。
[2, 18, 16, 8]
>>> li
[1, 9, 8, 4] #需要注意是,对 list 的解析并不改变原始的 list。
>>> li = [elem*2 for elem in li] 3
>>> li
[2, 18, 16, 8]
>>> li = ["1","2","3"]
>>> li
['1', '2', '3']
>>> [item*2 for item in li] #对字符串进行乘法运算,会使元素内容增长原有内容
['11', '22', '33']
keys, values 和 items 函数
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.keys() # Dictionary 的 keys 方法返回一个包含所有键的 list
['server', 'uid', 'database', 'pwd']
>>> params.values() # values 方法返回一个包含所有值的 list,它同 keys 方法返回的 list 输出顺序相同,所以对于所有的 n,params.values()[n] == params[params.keys()[n]]
['mpilgrim', 'sa', 'master', 'secret']
>>> params.items() #items 方法返回一个由形如 (key,value) 组成的 tuple 的 list
[('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')]
>>> [k for k, v in params.items()] # 忽略了返回 list 中 v 的值,而只包含了 k 的值,所以这个 list 解析最后等于 params.keys()
['server', 'uid', 'database', 'pwd']
>>> [v for k, v in params.items()]
['mpilgrim', 'sa', 'master', 'secret']
>>> ["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']