python列表解析是应用迭代协议的环境之一。
1.1 python列表解析基础知识
用法
[x*2 for x in L]
描述
python列表解析写在方括号内,代表最终生成一个新列表。
方括号内:for循环变量表达式开头+for循环头部。
python列表解析可以用for循环达到相应效果,但是列表解析比for循环快,因为使用了迭代协议。
示例
>>> L=list(range(1,6))
>>> L
[1, 2, 3, 4, 5]
>>> L1=[x*2 for x in L]
>>> L1
[2, 4, 6, 8, 10]
>>> L2=[]
>>> for x in L:
L2.append(x*2)
>>> L2
[2, 4, 6, 8, 10]
1.2 python文件列表解析
获取文件每行内容,并且去掉每行末尾的换行符。
可以通过python文件对象的readlines()方法,再用列表解析去掉换行符。
也可以不用readlines()方法,直接用文件迭代方式获取每行后去掉换行符。
示例
>>> path=r'E:\documents\F盘\iterator.py'
>>> f=open(path,encoding='utf-8')
>>> lines=f.readlines()
>>> f.close()
>>> lines
["S='梯阅线条'\n", 'print(S)\n', 'L=list(S)\n', 'print(L)']
>>> lis=[li.rstrip() for li in lines]
>>> lis
["S='梯阅线条'", 'print(S)', 'L=list(S)', 'print(L)']
>>> L3=[li.rstrip() for li in open(path,encoding='utf-8')]
>>> L3
["S='梯阅线条'", 'print(S)', 'L=list(S)', 'print(L)']
>>> [('S' in li,li[0]) for li in open(path,encoding='utf-8')]
[(True, 'S'), (True, 'p'), (True, 'L'), (False, 'p')]
1.3 python列表解析扩展
用法
[x*2 for x in L if x%2==0]
描述
python列表解析的for头部语句后面可以加速if判断条件,for变量表达式只会取符合if条件的变量值进行表达式运算。
示例
'''
iterator.py
S='梯阅线条'
print(S)
L=list(S)
print(L)
'''
>>> path=r'E:\documents\F盘\iterator.py'
>>> L5=[l.rstrip() for l in open(path,encoding='utf-8') if 'S' in l]
>>> L5
["S='梯阅线条'", 'print(S)', 'L=list(S)']
版权声明?:
本文首发微信公众号:梯阅线条,
原创不易,转载请注明出处。
更多内容参考python知识分享或软件测试开发目录。