Python 3.x 如何循环浏览字符串列表?
我有以下代码:Python 3.x 如何循环浏览字符串列表?,python-3.x,Python 3.x,我有以下代码: test = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"] for i in test: if i not in ["C","D"]: test.remove(i) print(test) 由于运行上述代码,我希望得到['C','D'],但是我得到了['B','C','D','F','H','J','L','N'] 如何使用Python3成功地遍历字符串列表并删除不需要的元
test = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"]
for i in test:
if i not in ["C","D"]:
test.remove(i)
print(test)
由于运行上述代码,我希望得到['C','D']
,但是我得到了['B','C','D','F','H','J','L','N']
如何使用Python3成功地遍历字符串列表并删除不需要的元素
注意:我不想使用理解列表
谢谢当从其他语言的列表中删除时,我曾经反向遍历列表:
test = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"]
for i in reversed(test):
if i not in ["C","D"]:
test.remove(i)
print(test)
请注意,reversed
将创建一个新列表,因此这可能不是大型列表的最佳解决方案。现在,由于您已经遍历了列表的副本,并且如果需要按照正确的顺序进行分析,您可以使用copy
:
import copy
for i in copy.copy(test):
if i not in ["C","D"]:
test.remove(i)
为避免进口(从):
最后,对我来说,最好的解决方案是一个传统的、就地的反向迭代,而不复制列表(“借用”并从答案中修改)
从其他语言的列表中删除时,我通常会反向遍历列表:
test = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"]
for i in reversed(test):
if i not in ["C","D"]:
test.remove(i)
print(test)
请注意,reversed
将创建一个新列表,因此这可能不是大型列表的最佳解决方案。现在,由于您已经遍历了列表的副本,并且如果需要按照正确的顺序进行分析,您可以使用copy
:
import copy
for i in copy.copy(test):
if i not in ["C","D"]:
test.remove(i)
为避免进口(从):
最后,对我来说,最好的解决方案是一个传统的、就地的反向迭代,而不复制列表(“借用”并从答案中修改)
第一个循环:
i
='A',i
不在['C',D']->删除i
。现在测试的第一项是'B'。因此在下一个循环中,i
将等于'C'。这就是问题所在…第一个循环:i
='A',i
不在['C','D']->删除i
。现在测试的第一项是'B'。因此在下一个循环中,i
将等于'C'。这就是问题所在…可能重复@soon我不想使用理解列表。谢谢你有什么理由不使用列表理解吗?@soon这个例子只是另一段代码的一个例子,我相信使用列表理解会使我的代码更难阅读可能重复的@soon我不想使用理解列表。谢谢你有什么理由不使用列表理解吗?@很快这个例子就是另一段代码的例子,我相信使用列表理解会使我的代码更难阅读。非常感谢,这比使用压缩列表有效吗?非常感谢,这比使用压缩列表更有效吗?我知道这一点,但当我使用int列表时,这种行为似乎不会发生。无论什么类型的列表都会发生。您可以使用pdb来调试和检查自己:')我知道这一点,但当我使用int列表时,这种行为似乎不会发生。无论是什么类型的列表,它都会发生。您可以使用pdb自行调试和检查:')