由于某些原因,下面的代码块只迭代For循环一次,尽管列表中有2个条目。在
def remove_client(self, client):
try:
temp = client.followedby
for i in temp:
print("Begin")
print(i)
print(client.followedby)
i.unfollow_user()
print(client.followedby)
print("Passed")
print("Out of loop.")
except AttributeError:
print("AttributeError")
pass
self.cur_id[client.id] = False
self.clients.remove(client)
被调用函数unfollow_user
:
据我所知,这应该是有效的。它不会抛出任何错误,控制台输出为:
[<server.client_manager.ClientManager.Client object at 0x000001F87C2CCE80>, <server.client_manager.ClientManager.Client object at 0x000001F87C2CCD30>] Begin <server.client_manager.ClientManager.Client object at 0x000001F87C2CCE80> [<server.client_manager.ClientManager.Client object at 0x000001F87C2CCE80>, <server.client_manager.ClientManager.Client object at 0x000001F87C2CCD30>] end of unfollow user [<server.client_manager.ClientManager.Client object at 0x000001F87C2CCD30>] Passed Out of loop.
我做错什么了,这里?在
简而言之,这是你正在做的事情的一个例子。
在python中使用for循环构造时,在迭代器上调用
next()
。当您在迭代时修改元素时,列表的内置迭代器的行为如下:您正在减少长度,迭代器会检查它。所以它只在一次迭代后就退出循环。
如果要在所有元素中运行它,请执行复制并将其分配给temp:
^{pr2}$相关问题 更多 >
编程相关推荐