莫名其妙、简单';列表索引超出范围';——python

莫名其妙、简单';列表索引超出范围';——python,python,django,Python,Django,我一直试着用这个做循环。实际上有很多for循环。我不断收到错误,“列表索引超出范围”。不知道 for q in range(0, len(list(package_ids))-1): if (q==0): query = 'Zero' + package_ids[q] else: query = 'More' + package_ids[q] 它很可能是一个生成器,package\u id转换为一个列表以找出项目的

我一直试着用这个做循环。实际上有很多for循环。我不断收到错误,“列表索引超出范围”。不知道

for q in range(0, len(list(package_ids))-1):
        if (q==0):
            query = 'Zero' + package_ids[q]
        else:
            query = 'More' + package_ids[q]

它很可能是一个生成器,
package\u id
转换为一个列表以找出项目的数量,或者它只是一个不公开
[]
的iterable。在任何情况下,您的代码最好表示为:

for q, x in enumerate(package_ids):
    if q == 0:
        query = 'Zero' + x
    else:
        query = 'More' + x
这将处理任何类型的iterable,包括生成器

或者更简洁地说:

for q, x in enumerate(package_ids):
    query = ('More' if not q else 'Zero') + x
这个怎么样




    for q in range(len(package_ids)):
         if (q==0):
             query = 'Zero' + package_ids[q]
         else:
             query = 'More' + package_ids[q]


什么类型的
package\u id
?为什么要从
len(列表(package\u id))
中减去
1
?它来自我应用的查询集。值('id')到例如,如果列表中有6个项目,它从0@mjabraham如果
package\u id
是发电机,然后,通过将其转换为列表,将其耗尽。什么是
包ID
的类型?:-(我之前也尝试过。只是为后代再试一次。列表索引仍然超出范围。如果需要更多帮助,最好提供实际的回溯或
包ID的类型。绝对没有“列表索引”在上面的代码中继续,所以如果您在执行上面的操作时遇到这样的错误,那么它一定在另一段代码中。