Python:如何枚举列表列表并使用该列表的长度来查找值

标签 python

我正在用 Python 构建一个老虎机模拟器。我已按如下方式设置卷轴:

Reels = [[10,9,4,5,7,4,9,2,6,7,3,4,9,3,4,9,6,5,4,11,8,9,11,2,4,1,9,10,4,9,10,6,4,9,1,5,4,9,1,10,3,8,6,4,9,1,8],
            [4,3,5,4,3,5,2,8,4,1,8,10,1,2,9,8,11,2,8,5,6,11,3,4,2,8,4,7,6,10,8,7,9,4,1,6,8,4,2,9,8,3,5,4,10,8],
            [1,9,4,2,5,1,6,9,2,5,9,2,10,9,4,8,9,11,2,5,8,9,10,4,1,10,9,2,10,5,9,7,5,6,8,9,7,3,10,6,2,9,5,8,3,1,10,3],
            [8,10,3,8,7,3,9,8,10,11,3,10,9,6,8,10,11,6,5,3,8,1,4,9,5,8,1,4,3,8,1,5,9,10,8,3,9,4,3,8,9,4,6,11,3,8,9,7,10,11],
            [4,11,1,6,3,9,5,10,9,5,8,11,10,3,1,4,10,3,9,4,7,3,9,10,4,3,1,5,10,6,5,8,4,6,9,1,5,10,8,9,5,4,6,8,9,4,8,5,7,9]]

现在我需要从 1 到 5 迭代它们并构建一个 3X5 矩阵。我想首先生成一个随机数来确定卷轴上停止的位置。该值将是该卷轴上的中间值。然后,我需要添加顶部和底部值(但必须考虑可能位于卷轴带开头或结尾的中间数字。我在 上收到错误“列表索引超出范围” if StopValue == Reels[i][len(Reels[i])]: 行:

def spin():
    SpinValues = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]

    for i, object in enumerate(Reels):
        length = len(Reels[i])
        StopValue = random.randint(0,length)
        SpinValues[i][1] = Reels[i][StopValue]
        if StopValue == 0:
            SpinValues[i][0] = Reels[i][len(Reels[i])]
        else:
            SpinValues[i][0] = Reels[i][StopValue - 1]
        if StopValue == Reels[i][len(Reels[i])]:
            SpinValues[i][2] = Reels[i][0]
        else:
            SpinValues[i][2] = Reels[i][StopValue +1]
    print(SpinValues)

spin()

最初我以为我可以只用“for i in reels”来做到这一点,但我在这里读了一篇文章建议使用“for index, object in enumerate(Reels)”方法。

最佳答案

len(Reels[i]) 不是 Reels[i] 的有效索引。最后一个有效索引是 len(Reels[i]) - 1

关于Python:如何枚举列表列表并使用该列表的长度来查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55069100/

相关文章:

python - Flask 有很多直通模型关联

python - pd.series.str.pad() 返回 NaN

python - 使用 Python 列出 FTP 中所有子目录中的所有文件

python - 如何在不使用 SQLAlchemy 引擎的情况下将数据框写入 Postgres 表?

python - 谷歌应用引擎 NDB

python - 如何使用 python matplotlib 估计卫星图像中的像素数

python - 参与区 Nao

pycharm调试器中的python 3.4 AssertionError

python - 装饰器模块 vs functools.wraps

python - C 和 Python - 使用套接字进行通信