builtins.TypeError:列表索引必须是整数或切片,而不是列表

时间:2019-06-17 00:00:41

标签: python-3.x

问题是:
编写一个函数get_column(game, col_num),该函数如上所述进行合法的3 x 3的不规则和交叉游戏,并返回一个3元素列表,其中包含列号col_num从上到下的值。您可以假设col_num的范围在0到2之间。
提示:由于无棋和交叉总是在3 x 3的网格上进行,因此您不需要处理一般的n x m网格。只需显式选择所需的行和列元素就足够了,因此您实际上不需要为此问题循环。但是,欢迎您尝试使用循环为自己做更多练习。

因此,我想从列表列表中检索函数中提到的任何列。

下面的代码是我尝试过的

def get_column(game, col_num):
    """returns a 3-element list containing the values from column number 
    col_num, top to bottom"""
    j = col_num
    result = []
    for i in game:
        result.append(game[i][j])
    return result

1 个答案:

答案 0 :(得分:0)

我不会尝试为您解决运动,但是我可以告诉您为什么会出错。

您的循环

for i in game:

遍历3x3列表列表。因此它将循环3次,即

i = ['O', 'X', 'O']         # pass 1
i = ['X', '','']            # pass 2
i = ['X', '','']            # pass 3

所以我是一个清单。然后,您尝试使用i在此语句中为列表编制索引

result.append(game[i][j])

但是列表必须使用单个整数(o,1或2)或切片(例如0:1、1:2等)进行索引。