<p>这里的代码片段将生成预期的输出。我刚刚在if语句中添加了一个else块,并删除了while块。你知道吗</p>
<pre><code>def packValues(ints):
L = []
c = 1
for i in range (len(ints)-1):
if not ints[i] == ints[i+1]:
if c > 1:
L.append(str(ints[i]) + ':' + str(c))
c = 1
else:
L.append(ints[i])
else:
c = c + 1
L.append(ints[-1])
print(L)
in_values = [28, 30, 45, 28, 28, 40, 40, 40, 45, 678, 567, 555, 555, 555, 555, 6, 8, 23]
packValues(in_values)
</code></pre>
<p>输出:</p>
<pre><code>[28, 30, 45, '28:2', '40:3', 45, 678, 567, '555:4', 6, 8, 23]
</code></pre>
<p><strong>编辑:</strong>
这也将考虑最近相邻的值。你知道吗</p>
<pre><code>def packValues(ints):
L = []
c = 1
for i in range (len(ints)-1):
if ints[i] == ints[i+1]:
c = c + 1
continue
if c > 1:
L.append(str(ints[i]) + ':' + str(c))
c = 1
else:
L.append(ints[i])
if c > 1:
L.append(str(ints[-1]) + ':' + str(c))
else:
L.append(ints[-1])
return L
in_values = [28, 30, 45, 28, 28, 40, 40, 40, 45, 678, 567, 555, 555, 555, 555, 6, 8, 23]
print(packValues(in_values))
in_values = [28, 30, 555, 555, 555, 6, 8, 23, 40, 40]
print(packValues(in_values))
</code></pre>
<p>输出:</p>
<pre><code>[28, 30, 45, '28:2', '40:3', 45, 678, 567, '555:4', 6, 8, 23]
[28, 30, '555:3', 6, 8, 23, '40:2']
</code></pre>