列表映射是个非常有用的方法,通过对列表的每个元素应用一个函数来转换数据。
例如:
params = {"server":"mpilgrim", \ "database":"master", \ "uid":"sa", \ "pwd":"secret" \ } print ["%s=%s" % (k, params[k]) for k in params.keys()] print ';'.join(["%s=%s" % (k, params[k]) for k in params.keys()]) 返回结果为: 返回结果为: ['uid=sa', 'pwd=secret', 'database=master', 'server=mpilgrim'] 还可以改进下,把元组转化成字符串,使用join函数方法。 'uid=sa;pwd=secret;database=master;server=mpilgrim' (join函数不仅使用于元组还使用于列表,功能是字符串化) split跟join相反,把字符串转换成元组 看如下应用 >>> str.split(';') ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret'] >>> str.split(';', 1) ['server=mpilgrim', 'uid=sa;database=master;pwd=secret'] >>> str.split(';', 2) ['server=mpilgrim', 'uid=sa', 'database=master;pwd=secret']
列表映射用例:
>>> li = [1, 9, 8, 4] >>> [elem*2 for elem in li] 1 [2, 18, 16, 8] >>> li [1, 9, 8, 4]
过滤列表:
语法:
[mapping-expression for element in source-list if filter-expression]
列表过滤介绍
>>> li = ["a", "mpilgrim", "foo", "b", "c", "b", "d", "d"] >>> [elem for elem in li if len(elem) > 1] ['mpilgrim', 'foo'] >>> [elem for elem in li if elem != "b"] ['a', 'mpilgrim', 'foo', 'c', 'd', 'd'] >>> [elem for elem in li if li.count(elem) == 1] ['a', 'mpilgrim', 'foo', 'c']