Python从数组中删除元素
我必须为一个学校项目创建一个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
所以我有一个包含所有密码的数组。我写了一个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']