【问题标题】:Trouble appending to a length limit if statement won't append more than one each time the function is called如果每次调用函数时语句不会附加超过一个,则无法附加到长度限制
【发布时间】:2013-11-24 04:30:39
【问题描述】:

所以我试图生成 Imgur 链接以追加到列表,直到列表长 10000 个链接,但该函数每次调用时只生成一个链接,而不是全部 10000 个。出了什么问题?

import string
import random
maybe = []
def id_generator(size=7, chars=string.ascii_uppercase + string.digits + string.ascii_lowercase):
    if len(maybe) < 10000:
        maybe.append('http://imgur.com/gallery/' + ''.join(random.choice(chars) for x in range(size)))

【问题讨论】:

  • 你需要循环追加调用
  • 呃,我该怎么做?
  • 查看我的答案。

标签: python list if-statement append imgur


【解决方案1】:

你没有循环附加部分:

这样做:

def id_generator(size=7, chars=string.ascii_uppercase + string.digits + string.ascii_lowercase):
for i in xrange(10000):
    maybe.append('http://imgur.com/gallery/' + ''.join(random.choice(chars) for x in range(size)))

【讨论】:

  • 所以这很奇怪,因为当我运行该函数并去检查它是否会死掉...
  • 没关系!它只是不喜欢 10000 作为一个数字。我猜这个列表太大了。
  • 你在哪里运行这个?
【解决方案2】:

您使用的是if,一个条件语句,而不是循环。

你需要的是这个:

while len(maybe) < 10000:

【讨论】:

  • 我试过了,但随后程序触发并告诉我我达到了最大递归量,长度为 992-994
  • 这就是全部功能吗?我测试了它,它工作正常。只有 10000 个循环应该没有问题。你在哪里运行这个?
  • 另外,将该评论添加到问题中,以说明您已经尝试过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2014-11-26
  • 2012-10-14
  • 2016-05-13
  • 1970-01-01
相关资源
最近更新 更多