<p>如果列表元素包含“非法”字符,我想删除该元素时会遇到这个问题。合法字符在多个列表中指定。它们是这样形成的,其中<code>alpha</code>代表字母表(a-z+a-z),<code>digit</code>代表数字(0-9),<code>punct</code>代表标点符号(某种程度上)。在</p>
<pre><code>alpha = list(string.ascii_letters)
digit = list(string.digits)
punct = list(string.punctuation)
</code></pre>
<p>这样我就可以指定一个非法字符,如果它没有出现在这些列表中。在</p>
<p>之后,我有一个包含元素的列表:</p>
^{pr2}$
<p>我想过滤掉包含非法字符的元素。所以这就是我想要得到的结果(不需要订购):</p>
<pre><code>var = ["Amuu2", "Q1BFt", "mgF)`", "Y9^^M", "W0PD7"]
</code></pre>
<p>编辑:</p>
<p>我尝试过(以及所有的变体):</p>
<pre><code>for InItem in Input:
if any(AlItem in InItem for AlItem in alpha+digit+punct):
FilInput.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(InItem)
</code></pre>
<p>在这种情况下,只使用过滤的元素创建一个新列表,但这里的问题是,当元素至少包含一个合法字符时,这些元素会被添加。例如:添加了<code>"ZR°p"</code>,因为它包含Z、R和p</p>
<p>我也试过:</p>
<pre><code>for InItem in Input:
if not any(AlItem in InItem for AlItem in alpha+digit+punct):
</code></pre>
<p>但在那之后,我就不知道如何删除元素了。
哦,还有一个小提示,为了让它变得更加困难,如果它稍微快一点就好了,因为它需要做数百万次。但它必须首先发挥作用。在</p>
<p>如果所有字符都符合您的条件,您可以使用列表理解并检查<code>all</code>:</p>
<pre><code>>>> [element for element in Input if all(c in alpha + digit + punct for c in element)]
['Amuu2', 'Q1BFt', 'mgF)`', 'Y9^^M', 'W0PD7']
</code></pre>