【问题标题】:Reading an array populate it and keep reading it读取一个数组填充它并继续阅读它
【发布时间】:2013-10-29 21:04:35
【问题描述】:

我有以下代码:

for account in accounts_list:   
    if not checked_accounts_list.has_key(account):
        response = send_request("example/path", {"account_id":account, "page_size":50})
        get_total(response, "accounts", "account_id", **accounts_list**, account)
        checked_accounts_list[account] = True

accounts_list 是一个包含 184 个结果的数组。在那个循环里面有一个 调用名为“get_total”的函数,该函数需要几个参数,其中一个参数是传递当前正在迭代的同一数组(以粗体突出显示)

我遇到了一些问题,我认为这是由于 accounts_list 在我迭代它时扩展。

底线是,如何在帐户列表不断扩展的同时继续阅读它?

【问题讨论】:

  • 您有哪些问题?请具体
  • 另外,如果该帐户已经在列表中,为什么要第二次检索该帐户?你确定你的逻辑是正确的?
  • accounts_list 是实际的 list,还是像 checked_accounts_list 一样的 dictlist 可以在附加后进行迭代,但 dict 不能。看起来您实际上可能想要更像一个处理队列而不是所有帐户的注册表。 accounts_list 来自哪里,你能改变它的格式或加载方式吗?
  • accounts_list 初始化为 accounts_list = [] & accounts_list 由我控制,是的,我可以更改它。

标签: python arrays loops


【解决方案1】:

遍历列表的不同副本:

for account in list(accounts_list):

这将遍历 accounts_list 中的原始项目,但在遍历循环时不会添加任何新闻。

如果您还希望遍历循环中添加的项目,则:

while accounts_list:
   account = accounts_list.pop(0)

例如,

def get_total(account, accounts_list):
   accounts_list.append(2*account)

accounts_list = [1]
while accounts_list:
   account = accounts_list.pop(0)
   print(account)
   get_total(account, accounts_list)

产量

1
2
4
8
16
...

【讨论】:

  • 我没有关注,你能告诉我一个完整的代码,它遍历 accounts_list 并在它扩展时继续阅读它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
相关资源
最近更新 更多