gpt4 book ai didi

python - 与 if 语句结合使用时,for 循环会忽略列表中的某些元素

转载 作者:行者123 更新时间:2023-11-30 23:11:20 26 4
gpt4 key购买 nike

我想迭代列表的元素,并删除错误的元素。首先,让我们检查所有元素:

tikzFiles=['keepme.tikz','inputs.tex','bla1.bat','bla2.tex','bla3.py']

for sFile in tikzFiles:
print(sFile)
print(sFile.endswith('.tikz'))

这会产生预期的结果:

keepme.tikz
True
inputs.tex
False
bla1.bat
False
bla2.tex
False
bla3.py
False

但是,还有两行

for sFile in tikzFiles:
print(sFile)
print(sFile.endswith('.tikz'))
if not sFile.endswith('.tikz'):
tikzFiles.remove(sFile)

让 for 循环忽略元素“bla1.bat”和“bla3.py”:

keepme.tikz
True
inputs.tex
False
bla2.tex
False

最佳答案

使用列表理解创建一个仅包含所需元素的新列表,如下所示

>>> tikzFiles = ['keepme.tikz', 'inputs.tex', 'bla1.bat', 'bla2.tex', 'bla3.py']
>>> [file for file in tikzFiles if file.endswith('.tikz')]
['keepme.tikz']

注意:更常见的是,在迭代集合时从集合中删除元素是一个坏主意。检查this answer了解更多关于运行时实际发生的情况。

关于python - 与 if 语句结合使用时,for 循环会忽略列表中的某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com