列表解析是列表类型的方法,这种方法结合了列表的方括弧、for循环、if语句。
- 用for把处理后的值放入列表:
1 squared = [ x**2 for x in range(4) ] 2 for i in squared: 3 print i 4 5 0 6 1 7 4 8 9
1 [ i*2 for i in [8,-2,5] ] 2 3 [16,-4,10]
2. 挑选符合要求的值放入列表
1 sqdEvens = [x**2 for x in range(8) if not x % 2 ] 2 3 for i in sqdEvens: 4 print i 5 6 0 7 4 8 16 9 36
例子
支持多重嵌套for循环以及多个if句子
- 迭代一个3行5列的矩阵
1 [(x+1,y+1) for x in range(3) for y in range (5)] 2 3 4 5 [(1,1),(1,2),(1,3),(1,4),(1,5),(2,1),(2,2),(2,3),(2,4)(2,5),(3,1),(3,2) 6 (3,3),(3,4),(3,5)]
- 磁盘文件样例
1 计算数据文件hhga.txt的单词个数(非空白字符的个数) 2 3 f= open('hhga.txt', 'r') 4 print len([word for line in f for word in line.split()])
上面这段代码等于
1 f = open('hhga.txt', 'r') 2 temp = [] 3 for line in f: 4 for word in line.split(): 5 temp.append(word) 6 print len(temp)
接着进行计算字符和空白符的数量的程序,先用seek(0)回到开头
1 import os 2 an = os. stat('hhga.txt').st_size #计算总字符数量 3 f.seek(0) #回到文件开头 4 cn = sum([len(word) for line in f for word in line.split()]) #字符数量 5 bn = an - cn 6
/****字符串的split()默认分隔符是空格 ' '
如果没有分隔符,就把整个字符串作为列表的一个元素***/