使用randint列出索引超出范围

时间:2018-07-23 06:23:37

标签: python arrays python-3.x random

我目前正在尝试在添加下一个项目之前将一个列表中的随机项目(使用randint)附加到另一个列表。好吧,这可能是一种怪异的表达方式,但是我不确定如何用其他方式来描述它-我很抱歉。因此,这是我当前有问题的代码以及所需的输出:

代码:

import random

lineIDPart3 = []
lineIDSpace6 = []
lineIDSpace6Poss = ["4", "0", "C", "8"]
lineIDSpace6Num = random.randint(0, 3)
while len(lineIDPart3) < 34:
    lineIDPart3.append(lineIDSpace6Poss[lineIDSpace6Num])
    if lineIDSpace6Num < 4:
        lineIDSpace6Num += 1
    else:
        lineIDSpace6Num = 0
print(lineIDPart3)

我想要的输出示例:

["C", "8", "4", "0", "C", "8"...]

对此我感到很困惑,因此我们将不胜感激!

3 个答案:

答案 0 :(得分:2)

这很简单。因为您的if statement<4,然后它是+ = 1,所以这意味着它将循环从3增长到4。只需更改

 if lineIDSpace6Num < 4:

 if lineIDSpace6Num < 3:

您的问题将得到解决。

答案 1 :(得分:2)

在这种情况下,您将太远了一个整数:

if lineIDSpace6Num < 4:” (在这种情况下,如果lineIDSpace6Num等于3,则允许它增加1)

尝试将数字从 4更改为3 (或者最好更改为(len(lineIDSpace6Poss)-1),以防万一您决定在生成列表中需要更多字符);因为您的数组只有4个元素,这意味着最大值必须为3,否则您将有一个index out of range异常。

答案 2 :(得分:0)

size=34
listy=["4", "0", "C", "8"]
random.shuffle(listy)
newlist=(listy*(int(size/len(listy))+len(listy)))[:size]

这是一种更简单的方法