这段代码的目标是用户输入一个字符串,其中包含三个任意顺序的“通配符”。我在我的程序中赋予了一个意义?是任意字母或数字,#是任意数字,&是任意字母)。然后我想要一个适当字母和/或数字的每个组合的列表,但是它必须保持与原始通配符相同的顺序。最后,我将把所有这些新的组合替换回原来的字符串。你知道吗
wildcards = ['?', '#', '&'] #user has entered wildcards in this order
n = len(wildcards)
list = itertools.product('abc123',repeat=n) #creates a cartesian product of every combination of letters and numbers (only using abc123 to be more manageable for now.
print(list)
for x in list: #going to iterate through the list
iter = 0
while iter < n: #iterating through an individual object in the list
if wildcards[iter] == '#': #if that index should be a number but isn't, we delete that object from the list
if x[iter] != string.digits:
del list[x]
elif wildcards[iter] == '&': #if it should be a letter and isn't we delete the object
if x[iter] != string.ascii_lowercase:
del list[x]
iter = iter+1
print(list) #print the new list
我觉得这应该行得通,但必须有一个更有效的方法。我也遇到了这个错误。类型错误:'itertools.产品'对象不支持项删除,因此无法删除不正确的列表项。这是因为它是一个元组,我不能修改元组元素吗?你知道吗
您可以使用^{} :
如果
user_string
包含通配符以外的字符,也可以执行此操作:相关问题 更多 >
编程相关推荐