Python挑战#2 - 针对循环问题

时间:2011-09-24 22:47:52

标签: python for-loop

Python Challenge #2

Answer I found

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'。 除了那一点,我理解其余的代码。 如果我尝试删除它,我会收到错误,那么它会做什么?

感谢。

3 个答案:

答案 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