【发布时间】:2021-06-23 22:48:44
【问题描述】:
我想在循环完成运行时最后在列表中获取单个项目,
word = 'DOOR'
# so the length of word is 4
actual_list = ['A', 'B', 'C', 'D', 'E', 'F']
在这里,我想用变量word 的长度在actual_list 上运行一个循环,当循环完成时,它会显示列表中存在的最后一项。当我用笔和纸解决这个问题时,我得到了 E 的项目,它没有被循环删除。这段代码我也试过了,但是没能成功得到结果,
word = 'DOOR'
print(len(word))
actual_list = ['A', 'B', 'C', 'D', 'E', 'F']
for w in actual_list[:]:
if len(actual_list) > 1:
del actual_list[len(word)-1]
print(actual_list)
说明:
循环删除列表中的第 4 个项目,并且在第一个项目被删除后,循环将再次从下一个项目运行,
示例:第一个循环后['A', 'B', 'C', 'E', 'F'],第二个循环后['A', 'C', 'E', 'F'],第三个循环后['C', 'E' ,'F'],第四个循环后['E', 'F'],第五个循环后['E'] 同样,循环继续它从下一个运行删除最后一项的位置。
当我运行上面的代码时,它说索引超出范围,我已经在这里卡了将近 4 天。
我想要的结果是,
# The last item in the list
['E']
谁能解决这个问题?
【问题讨论】:
-
如果单词或其长度不会改变,循环不会总是删除索引 3 处的列表项吗?在第一次运行时它将删除 D,在第二次 F 期间,您可能会在第三次循环期间收到异常,因为在索引 3 处找不到更多元素。您能否解释一下为什么会在第二个循环中删除字母“B”?
-
是的,你的问题是对的,索引会超出范围。这里的过程是,在删除第一个项目“D”后,循环将继续从放置在先前删除的项目“E”之后的项目运行(“E”放置在“D”之后),所以循环将从'D'之后的'E'开始,因此它将从'E'中删除下一个第4个出现的项目,即'B'('E'中的第4个项目),同样它运行直到它得到列表中的单个项目。
标签: python loops if-statement conditional-statements iteration