FILE_PATH = 'l2-text'
f = open(FILE_PATH)
print ''.join([ t for t in f.read() if t.isalpha()])
f.close()
问题:为什么在for循环t for t in f.read()
之前他们是't'。
除了那一点,我理解其余的代码。
如果我尝试删除它,我会收到错误,那么它会做什么?
感谢。
答案 0 :(得分:3)
这是list comprehension,而不是for
- 循环。
列表推导提供了创建列表的简明方法。
[t for t in f.read() if t.isalpha()]
这会在文件(alpha
)中创建所有f
个字符的list
。然后你将它们join()
放在一起。
您现在有一个文档链接,可以帮助您理解理解。当你不知道他们叫什么时,搜索一些东西很棘手!
希望这有帮助。
答案 1 :(得分:2)
[t for t in f.read() if t.isalpha()]
是列表理解。基本上,它采用给定的可迭代(f.read()
)并通过应用可选过滤器(if
子句)和映射函数(左侧的部分)读取所有元素来形成列表for
)。
然而,映射部分在这里是微不足道的,这使得语法看起来有点多余:对于给定的每个元素t
,它只是将元素值(t
)添加到输出列表。但是更复杂的表达式是可能的,例如t*2 for t ...
将复制所有有效字符。
答案 2 :(得分:0)
请注意以下内容也有效:
print ''.join(( t for t in f.read() if t.isalpha()))
而不是[和]你有(和) 这指定了生成器而不是列表。 generator comprehension