<p>可以使用<code>str.translate</code>删除数字:</p>
<pre><code>l = [[[u'HH2', u'AH0', u'L', u'OW1'], [u'HH', u'EH0', u'L', u'OW1']]]
tbl = {ord(d): u"" for d in u"0123456789"}
for sub in l:
sub[:] = [[s.translate(tbl) for s in w] for w in sub]
</code></pre>
<p>输出:</p>
<pre><code>[[[u'HH', u'AH', u'L', u'OW'], [u'HH', u'EH', u'L', u'OW']]]
</code></pre>
<p>如果要将其用于任意嵌套:</p>
<pre><code>l = [[[u'HH2', u'AH0', u'L', u'OW1'], [u'HH', u'EH0', u'L', u'OW1']]]
def rem_d(l, tbl):
if isinstance(l, list):
return [rem_d(ele, tbl) for ele in l]
return l.translate(tbl)
tbl = {ord(d): u"" for d in u"0123456789"}
print(list(rem_d(l, tbl)))
</code></pre>
<p>输出:</p>
<pre><code>[[[u'HH', u'AH', u'L', u'OW'], [u'HH', u'EH', u'L', u'OW']]]
</code></pre>
<p>翻译将比迭代每个数字快得多:</p>
<pre><code>In [13]: l = [[[u'HH2', u'AH0', u'L', u'OW1'], [u'HH', u'EH0', u'L', u'OW1']]]
In [14]: l = [l[0] for _ in range(100000)]
In [15]: timeit rem_d(l, tbl)
1 loops, best of 3: 777 ms per loop
In [16]: timeit remove_digits(l)
1 loops, best of 3: 1.83 s per loop
In [17]: remove_digits(l) == rem_d(l,tbl)
Out[17]: True
</code></pre>