擅长:python、mysql、java
<p>您可以使用<code>itertools</code>模块提供的功能(尽管一开始自己尝试也很好):</p>
<pre><code>from itertools import groupby
data = ['L','L','L','L','R','R.', 'R.','L','R','A.','L','A','A']
output = []
for key, group in groupby(data):
if not (key[-1] == '.'):
output.append(str(len(list(group))) + key)
print(data)
print(output)
</code></pre>
<p>我还加了以句号结尾的字母,所以它很有代表性</p>
<p><code>groupby</code>创建iterable元素的组,并将它们作为<code>key, group object</code>对返回给您<code>key</code>是您的列表元素,因此带句号的字母将被单独处理(它们的显示方式与裸字母不同)。这在<code>if</code>语句中使用-如果字母以句号结尾,代码将跳过它。更好的说法是,如果不这样做,那么它将继续-并附加一个字符串,该字符串是组的大小和键字母</p>
<p>这是一个版本,如果一个组中有多个字母,也会添加一个<code>s</code></p>
<pre><code>from itertools import groupby
data = ['L','L','L','L','R','R.', 'R.','L','R','A.','L','A','A']
output = []
for key, group in groupby(data):
if not (key[-1] == '.'):
group_len = len(list(group))
if group_len == 1:
output.append('1' + key)
else:
output.append(str(group_len) + key + 's')
print(data)
print(output)
</code></pre>