我正在尝试从迭代列表推导中排除某个值(特别是空格“”),我不确定如何在列表推导中做到这一点。
我正在构建一个简单的密码生成器,我知道稍后如何通过仅执行if else语句来完成此操作,但是我不太确定如何在passcharacters.append(c)部分中执行该操作。我希望它使所有ASCI字符都与空格分开。
import random as rd
passlength = int(input('How long should the password be?:\n'))
passcharacters = []
for c in (chr(i) for i in range(32,127)):
passcharacters.append(c)
print(passcharacters)
secure_random = rd.SystemRandom()
password = ""
for x in range(passlength):
character = secure_random.choice(passcharacters)
password = password + character
print("\nYour password is: \n"+password)
答案 0 :(得分:3)
您应该执行直接列表理解而不是附加。列表推导和生成器表达式均支持条件:
/parent/child[@N="1"]
另一种更具可读性的方式是:
passcharacters = [chr(i) for i in range(32,127) if chr(i) != ' ']
这是您想要的相同字符,只是顺序不同。您可以通过
确认import string
passcharacters = list(string.printable.strip())
即set(string.printable.strip()) == {chr(i) for i in range(32,127) if chr(i) != ' '}
。