我正在尝试编写一个程序的一部分,该程序接收先前生成的列表,其中列表中的所有项目都包含字母和数字,并删除所有字母。
这是我写的代码:
test = ["test252k", "test253k"]
numbers = list(str(range(0,10)))
for i in test:
i = list(i)
i = [x for x in i if x in numbers]
i = "".join(str(e) for e in i)
test = [i for i in test]
但是当我打印测试时,我只是从第1行获得原始列表。
如何确保for循环用新值替换i的原始值?
答案 0 :(得分:2)
您真正的问题是您不以任何方式更新test
。当您执行[i for i in test]
列表理解时,使用i
会影响外部循环中声明的变量。如果i
具有更新的值,则只需将其附加到新列表:
new_list = []
for i in test:
i = list(i)
i = [x for x in i if x in numbers]
i = "".join(str(e) for e in i)
new_list.append(i)
答案 1 :(得分:0)
test = ["test252k", "test253k"]
numbers = list(str(range(0,10)))
count = 0
for i in test:
i = list(i)
i = [x for x in i if x in numbers]
i = "".join(str(e) for e in i)
test[count] = i
count = count + 1
print test