擅长:python、mysql、java
<p>如果您不想修改<code>eachAbstract</code>对象,而只是获得一个修剪过的版本,则可以使用以下方法:</p>
<pre><code>truncated_list = [abstract[:trim_len] for abstract in train_abstracts_encoded]
</code></pre>
<p>请注意,这与使用<code>del</code>的版本不同,因为它不修改对象</p>
<p>您仍然可以通过将公共部分移出<code>if/else</code>分支来简化您的版本:</p>
<pre><code>truncated_list = []
for eachAbstract in train_abstracts_encoded:
if len(eachAbstract) > trim_len:
del eachAbstract[trim_len:]
truncated_list.append(eachAbstract)
</code></pre>
<p>但是,由于您正在原地修改对象,您只需创建原始列表的副本,然后在其上循环(这将稍微快一些,因为<code>copy()</code>避免了对<code>append</code>的重复调用,从而避免了内部调整大小):</p>
<pre><code>truncated_list = train_abstracts_encoded.copy()
for eachAbstract in truncated_list:
if len(eachAbstract) > trim_len:
del eachAbstract[trim_len:]
</code></pre>
<p>这里<code>train_abstracts_encoded</code>和<code>truncated_list</code>共享相同的对象</p>