Python从数组中删除元素

时间:2019-01-20 11:39:24

标签: python arrays python-3.x

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

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

for mdp in passwd:
    if mdp != '*' or mdp != '!':
        str(mdp)
        list.append(mdp)
        print(list)

但是当我用“!”打印阵列密码时和“ *”仍在里面...我不知道为什么。

2 个答案:

答案 0 :(得分:1)

您需要进行遏制检查,而不是!=检查。进行列表理解:

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']

答案 1 :(得分:0)

代码的主要问题是if语句中的or
考虑以下内容,假设您的密码是“!”不是,如果您进入,则检查密码是否不是'',然后确认是否正确并进入内部,这很不好。如果您的密码是'',同样的问题也会起作用,它将检查其密码'*'是否正确,然后将使用or并检查其密码'!'。看到它不是并进入if内,这仍然是错误的。 您要在此处执行的操作是and,因此您的密码必须均为 ,而不是“ *”和“!”。 此外,您可以使用更复杂的编码样式,例如理解力和成员测试 另外,请勿将单词list用作变量,因为它会遮盖类型列表 在一起你会得到:
filtered = [item for item in passwd if item not in ['*', '!']]
假设您要过滤的密码为单个字符长