Python从数组中删除元素

Python从数组中删除元素,python,arrays,python-3.x,Python,Arrays,Python 3.x,我必须为一个学校项目创建一个python蛮力。 我有一个影子文件,我必须暴力破解密码 在列表中,我有几个不需要的密码,因此我想将它们从阵列中删除。 所以我有一个包含所有密码的数组。我写了一个if条件来检查密码是否与“*”或“!”不同 但是当我打印带有“!”和“*”的数组密码时,它们仍然在里面。。。我不知道为什么。您需要的是安全壳检查,而不是=检查。做一个清单: password = ['ahdjd', 'xj*', '!jr'] new_password_list = [x for x in

我必须为一个学校项目创建一个python蛮力。 我有一个影子文件,我必须暴力破解密码

在列表中,我有几个不需要的密码,因此我想将它们从阵列中删除。
所以我有一个包含所有密码的数组。我写了一个if条件来检查密码是否与“*”或“!”不同


但是当我打印带有“!”和“*”的数组密码时,它们仍然在里面。。。我不知道为什么。

您需要的是安全壳检查,而不是
=检查。做一个清单:

password = ['ahdjd', 'xj*', '!jr']

new_password_list = [x for x in password if '*' not in x and '!' not in x]
print(new_password_list)
# ['ahdjd']

代码的主要问题是if语句中的

考虑以下情况,假设您的密码是“!”如果你不进入你的if,它会检查密码是否为“”,看看密码是否正确,然后进入,这是错误的。如果您的密码为“”,它将检查其“*”是否为“”,然后将启用
并检查其“!”请确保它不是,并进入if,这仍然是错误的。
这里要做的是有一个
,因此您的密码必须既不是“*”也不是“!” 此外,您还可以使用更奇特的编码样式,如理解和成员测试 另外,不要将单词
list
用作变量,因为它会给类型列表添加阴影 你们将一起得到:
filtered=[如果项目不在['*','!']中,则项目对应passwd中的项目]


这假设您要过滤掉的密码是单个字符长的

应该是
。想一想,看看你是否能找出原因。试着将你的if重做成:
如果mdp不在['*','!']:
thanx for answer@paritossingh,但我不明白为什么要使用,我会在线检查。thanx”或“情况是正确的。我想你应该检查一下答案中提到的遏制措施below@KannappanSirchabesan不,不是。到OP:
mdp!='*'
mdp!='!'。假设您遇到一个
*
符号。条件反射发生了什么?它求值为
False或True
并变为True,if块仍然执行。您需要确保mdp既不是
*
也不是
。也就是说,如果两个否定匹配项中的“任何一个”给出一个False,则条件应该失败。(这种方法不会以奇怪的方式改变条件句,而且它有助于用笔和纸来思考它,并实际计算出来。)
password = ['ahdjd', 'xj*', '!jr']

new_password_list = [x for x in password if '*' not in x and '!' not in x]
print(new_password_list)
# ['ahdjd']