回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个清单:</p>
<pre><code>oldlist = ['do gs\n','ca ts\n','monk eys\n','fro gs\n','\n','lio ns\n','tige rs\n','she ep\n']
</code></pre>
<p>我试图只提取换行符<strong>'\n'</strong>之前列表<strong>['do gs\n','ca ts\n','monk eys\n','frog\n']</strong>的<strong>第一部分</p>
<p>这是我的代码,它输出正确的解决方案:</p>
<pre><code>oldlist = ['do gs\n','ca ts\n','monk eys\n','fro gs\n','\n','lio ns\n','tige rs\n','she ep\n']
print("Before Loop: ", oldlist)
newlist = []
for iter in oldlist:
if '\n' in iter[0]:
break
else:
newlist.append(iter)
print("After Loop: ", newlist)
</code></pre>
<p>然而,从</p>
<pre><code>if '\n' in iter[0]:
</code></pre>
<p>我不明白它是怎么工作的。为什么这个循环只有在iter[0]</strong>时才起作用?为什么我只是在iter上迭代,它只输出一个空列表</p>
<p><strong>使用“iter[0]”时输出:</strong></p>
<pre><code>Before Loop: ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n', '\n', 'lio ns\n', 'tige rs\n', 'she ep\n']
After Loop: ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n']
</code></pre>
<p><strong>使用“iter”时输出:</strong></p>
<pre><code>Before Loop: ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n', '\n', 'lio ns\n', 'tige rs\n', 'she ep\n']
After Loop: []
</code></pre>
<p>如果我这样做:</p>
<pre><code>for iter in oldlist:
print(iter[0])
</code></pre>
<p>它只从第一个字符串中吐出d</p>
<p>总之,在幕后到底发生了什么,使得iter[0]能够遍历oldlist,从而在newlist中给出正确的解决方案</p>