我尝试删除数据库中小于所选字符 i 的所有字符。数据库是字符列表的列表。
def project(database, i):
test = database.copy()
for idx,lists in enumerate(database.copy()):
for char in lists:
print(char)
if char <= i:
test[idx].remove(char)
return test
a = [['A','B','D'],['A','B','C','D']]
print(project(a, 'C'))
Output:
A D A C
[['B', 'D'], ['B', 'D']]
不知何故,代码从不检查“B”,尽管它在列表中。没有 if 条件 + 删除行(第 5-6 行)的相同代码执行以下操作:
Output:
A B D A B C D
['A', 'B', 'D'], ['A', 'B', 'C', 'D']]
为什么我不改变迭代列表,打印的字符却改变了?
最佳答案
调试后:
问题不是因为您的 if 语句,而是因为删除更改了索引。
让 mt 证明:
第一次迭代并删除 A 后,列表将是:
["B", "D"]
您的索引将为 1,因为 "B"
将被忽略。
关于python - 删除函数更改不相关的 for 循环的元素 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45928858/