Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何循环浏览字符串列表?_Python 3.x - Fatal编程技术网

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自行调试和检查:')