擅长:python、mysql、java
<p>嵌套循环的问题(从当前问题的角度来看)正是因为外部循环的每次迭代都会运行到内部循环完成。因此,相反,通过从<code>fileA</code>迭代器显式调用下一项来设置<code>lineA</code>:</p>
<pre><code>with open(locationA + filenameC,'r') as fileC, open(locationA + filenameA,'r') as fileA:
for lineC in fileC:
fieldC = lineC.split('#')
lineA = next(fileA)
fieldA = lineA.split('#')
print 'UserID Clicks' + fieldC[0]
print 'UserID Activities' + fieldA[0]
if (fieldC[0] == fieldA[0]) and (fieldC[2] == fieldA[2]):
print 'OK'
</code></pre>
<p>一旦<code>fileC</code>耗尽,此逻辑将忽略<code>fileA</code>中的任何额外行,并且如果<code>fileC</code>包含的行数超过<code>FileA</code>则如果不进行特殊检查,则事物也可能变得丑陋。在</p>
<p>另一种方法可能使用<code>itertools.izip()</code>成对收集每个文件中的行:</p>
^{pr2}$
<p>我想不出使用其中一个而不是另一个的具体原因,但是如果文件的大小是任意的,那么就拒绝使用内置的<code>zip()</code>函数而不是{<cd7>}-前者返回一个列表,因此内存使用量取决于文件大小,而后者是一个生成器,因此可以根据需要创建值。在</p>