擅长:python、mysql、java
<p>两者都可以通过列表理解轻松完成。你知道吗</p>
<p>删除某些元素:</p>
<pre><code>>>> nquestions = [[i ,j] for i, *_, j in questions]
>>> nquestions
[['Johny', '1984'], ['Andrew', '1975'], ['Harry', '1993']]
</code></pre>
<p>在这里,我们从每个子列表中解压,用<code>*_</code>去掉中间的元素,同时保留第一个和最后一个元素,以便从中创建新的列表。你知道吗</p>
<p>对于筛选,最好创建一个自定义的<a href="https://docs.python.org/3/library/functions.html#func-range" rel="nofollow noreferrer">^{<cd2>}</a>,并使用另一个列表理解来筛选出<code>in</code>范围内的值:</p>
<pre><code>>>> r = range(1980, 2000)
>>> [i for i in nquestions if int(i[1]) in r]
[['Johny', '1984'], ['Harry', '1993']]
</code></pre>
<p><code>int(i[1])</code>是必需的,因为值是字符串。除了非常直观之外,<code>range</code>对象的成员资格测试也非常有效(参见:<a href="https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3?rq=1">Why is "1000000000000000 in range(1000000000000001)" so fast in Python 3?</a>)。你知道吗</p>