<p>您可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools.groupby" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>import itertools
nodupeletterlist = [k for k, _ in itertools.groupby(letterlist)]
</code></pre>
<hr/>
<p>按照评论中的要求,不使用<code>itertools</code>的解决方案:</p>
<pre><code>def nodupe(letters):
if not letters:
return []
r = [letters[0]]
for ch in letters[1:]:
if ch != r[-1]:
r.append(ch)
return r
nodupeletterlist = nodupe(letterlist)
</code></pre>
<hr/>
<p>拟议“工作解决方案”的固定版本:</p>
<pre><code>def nodupe(letters):
if not letters:
return []
r = [letters[0]]
r += [l for i, l in enumerate(letters[1:]) if l != letters[i]]
return r
nodupeletterlist = nodupe(letterlist)
</code></pre>
<hr/>
<p>您还可以使用<a href="https://docs.python.org/3/library/random.html#random.choices" rel="nofollow noreferrer">^{<cd3>}</a>稍微简化随机生成器:</p>
<pre><code>import random
chars = 'abcd'
letterlist = random.choices(chars, k=20)
</code></pre>
<p>或使用<a href="https://docs.python.org/3/library/random.html#random.randint" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre><code>import random
start, end = ord('a'), ord('d')
letterlist = [chr(random.randint(start, end)) for _ in range(20)]
</code></pre>