问题在于最后一个for循环块。它应该弹出的世博会名单,以完成消失,但它停止在长度32。我无法想象为什么。你知道吗
我试过了列表.pop方法,也如del运算符所示。两者都会产生相同的错误。你知道吗
def generator(): # generator which generates like 2,4,8,16 -> 2 to the power of x
list = range(1,65)
for i in list:
yield 2**i
mygen = generator() # generator object
expo = [] # empty list for the exponential values
for i in mygen: # for loop to put the values of the genertor in list form
expo.append(i)
print(expo)
for i in expo: # attempt to delete the last element, but stops at list with length 32
del expo[-1]
print(expo)
我希望列表会被删除,因为它是逐步建立。它应该变成[],但是变成len(expo)=32。你知道吗
那为什么会停止呢?你知道吗
您正在删除正在迭代的列表,结果只删除了列表的一半,然后迭代在32个元素上停止(因为
expo
列表的长度是64
,它的一半是32
您有两种选择:
list.clear
一步清除列表,而不是for循环从文档:https://docs.python.org/3/tutorial/datastructures.html
您不断地删除列表的最后一个元素
expo[-1]
因此,当您清除了约一半的列表(32/64个元素)时,就没有更多的值可以迭代了,迭代就停止了。你知道吗根据经验,在迭代过程中操纵列表通常是个坏主意,因为这种意外行为可能会发生。你知道吗
相关问题 更多 >
编程相关推荐