Python中的List表达式
一个小故事 三年前,我在一篇博客里不无自豪的记录了python编写的小函数,当时感觉python真强大,11行代码就写出了一个配置文件的解析器。 def loadUserInfo(fileName): userinfo = {} file = open(fileName, "r") while file: line = file.readline() if len(line) == 0: break if line.startswith('#'): continue key, value = line.split("=") userinfo[key.strip()] = value.strip() return userinfo 最近正在跟同事学习python在数据挖掘中的应用,又专门学习了一下python本身,然后用list comprehension简化了以下上面的代码: def loadUserInfo(file): return dict([line.strip().split("=") for line in open(file, "r") if len(line) > 0 and not line.startswith("#")]) 这个函数和上面的函数的功能一样,都是读取一个指定的key=value格式的文件,然后构建出来一个映射(当然,在Python中叫做字典)对象,该函数还会跳过空行和#开头的行。 比如,我想要查看一下.wgetrc配置文件: if __name__ == "__main__": print(loadUserInfo("/Users/jtqiu/.wgetrc")) 假设我的.wgetrc文件配置如下: http-proxy=10.18.0.254:3128 ftp-proxy=10.18.0.254:3128 #http_proxy=10.1.1.28:3128 use_proxy=yes 则上面的函数会产生这样的输出: {'use_proxy': 'yes', 'ftp-proxy': '10.18.0.254:3128', 'http-proxy': '10.18.0.254:3128'} list comprehension(列表推导式) 在python中,list comprehension(或译为列表推导式)可以很容易的从一个列表生成另外一个列表,从而完成诸如map, filter等的动作,比如:...