<p>我有一个函数,它接受一个格式为'1,3-5,7,19'的字符串,并将输出列表<code>[1, 3, 4, 5, 7, 19]</code>。在</p>
<p>然而,我在想,也许这对嵌套列表理解足够简单。在</p>
<p>我最初的职能是:</p>
<pre><code>result = []
for x in row_range.split(','):
if '-' in x:
for y in range(int(x.split('-')[0]), int(x.split('-')[1]) + 1)):
result.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(y)
else:
result.append(int(x))
</code></pre>
<p>我想理解应该是:</p>
^{pr2}$
<p>甚至是</p>
<pre><code>result = [y for x in row_range.split(',') if '-' in x for y in range(int(x.split('-')[0]), int(x.split('-')[1] + 1) else int(x)]
</code></pre>
<p>但这些都是语法错误。把if/else移到理解的前面</p>
<pre><code>result = [y if '-' in x else int(x) for x in row_range.split(',') for y in range(int(x.split('-')[0]), int(x.split('-')[1]) + 1)]
</code></pre>
<p>导致索引器错误:列表索引超出范围。在</p>
<p>这可能吗?我已经有了一个可以很好地处理它的函数,并且更具可读性,但是我只是好奇这是否可以用python实现。在</p>