擅长:python、mysql、java
<p>你在正确的轨道上。您可以通过在list comp中用<code>*</code>操作替换和<code>if..else</code>来进行简化。你知道吗</p>
<pre><code>In [53]: [y for x in range(10) for y in [x] * (2 - x % 2)]
Out[53]: [0, 0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9]
</code></pre>
<p>这大致可以理解为:</p>
<pre><code>res = []
for x in range(10):
if not (x + 1) % 2:
res.extend([x])
else:
res.extend([x, x])
</code></pre>
<hr/>
<p>或者,您可以创建一个列表列表并使用<code>itertools.chain.from_iterable</code>将其展平:</p>
<pre><code>In [54]: import itertools
In [55]: list(itertools.chain.from_iterable([x] * (2 - x % 2) for x in range(10)))
Out[55]: [0, 0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9]
</code></pre>
<hr/>
<p>感谢评论中的人对重构这些解决方案的帮助。你知道吗</p>