2014-07-26 71 views
0

我正在运行Python 2.7.3。在Xubuntu上。我的问题是对“for”循环的解释请求。我正在阅读很多不同的解释,但我仍然不理解为什么for循环的工作方式(特别是在下面的示例中)。 我正在使用一个简单的代码作为例子。代码计算行数。Python 2.7 For循环的说明

我用电子邮件列表和其他信息打开了一个.txt文件(这里是:http://www.py4inf.com/code/mbox-short.txt),我对以“From:”开头的部分感兴趣。

for line in fhand: 
if line.startswith ("From:"): 
    print line 

我想我明白,我可以把这种循环是一种对于每一个对象的“部分/ X /线”“fhand”做如下:如果行启动以“从”,打印线。

我的困惑是,我基本上可以输入一个“x”而不是线或我想要的任何东西,它仍然可以正常工作。 for循环如何理解我希望它只计算行数?这里的“可数”部分是什么?我怎么能想象它?基本上我想更深入地理解为什么下面的代码可以工作,因为我相信它可以帮助我在未来构建其他类似的代码。

感谢您为解答此问题所付出的努力。

+0

线只是一个变量名。你可以把几乎每个你想要的名字用于变量。你应该为初学者阅读一些书。 – miindlek

+0

不管你称之为变量。它不像“如果它被称为”名称“,让我们返回行,如果它被称为字符,让我们返回字符”。文件对象是行的迭代器,所以它就是迭代器。期。 –

回答

0

fhand是字符串的iterable object

line因此是该对象中的单个字符串成员。

无论你喜欢什么,你都可以命名它,它仍然被视为一个字符串。

+0

'fHand'不仅仅是一个文件对象。 –

+0

@PadraicCunningham:是的,更新到一般情况。 –

+0

我刚刚注意到在OP的问题“我打开了一个带有电子邮件列表和其他信息的.txt文件”:) –

0

fhand是一个数组/列表/集合/文件处理程序/任何可迭代项目 - 它并不重要,但它是它们的集合。

如果它是一个文件处理程序,读取时的文件通常是逐行读取的,因此为什么for循环在每行的基础上工作。

for循环基本上是“列表中的每个事物”。我认为,“线”变量是什么扔你。这可能被命名为任何东西......例如: -

for x in fhand: 
    if x.startswith("From"): 
     print x 

“行”只是一个变量,它没有任何的轴承就如何代码工作,它只是一个友好的命名标识。