转摘,内容来源于 《Head First Python》书籍
列表推导(list comprehension) ,一般列表转换,都是用for 命令迭代列表中的每一个数据,而 列表推导可以简化从一个列表转换为另一个列表的代码,
例子,现在有两个文件 james.txt ,julie.txt ,打印结果并排序
james.txt 内容 2.01,2-22,2.34,2:38,3.01,3-10,3:20
julie.txt 内容 2.22,2:11,2.23,2.59,3-21,3:22,2-13
python 代码:
###定义函数sanitize,用来转换数据中的-与:
def sanitize(time_string):
if '_' in time_string:
splitter='_'
elif ':' in time_string:
splitter=':'
(mines,secs)=time_string.split(splitter)
return(mins + '.' + secs)
###打开文件,读入数据
with open('james.txt') as jaf: data=jaf.readline()
james=data.strip().split(',')
with open('julie.txt') as juf: data=juf.readline()
julie=data.strip().split(',')
###定义新列表,用来存储转换后的数据
clean_james=[]
clean_julie=[]
###开始转换
for each_t in james:
clean_james.append(sanitize(each_t))
for each_t in julie:
clean_julie.append(sanitize(each_t))
###将新的列表数据,排序打印
print(sorted(clean_james))
print(sorted(clean_julie))
上面代码中定义列表存储转换数据部分,可以使用列表推导完成,来简化代码
clean_james=[]
for each_t in james:
clean_james.append(sanitize(each_t))
等价于 clean_james=[sanitize(each_t) for each_t in james]