如何在Python中计算数组的某个部分?

如何在Python中计算数组的某个部分?,python,arrays,Python,Arrays,turns = [4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4] turns.append([1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4]) turns.append([4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4]) turns.append([0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21]) turns.append([0, 0,


turns = [4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]
turns.append([1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4])
turns.append([4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4]) 
turns.append([0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21])
turns.append([0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29])
turns.append([0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0])

arrayValue = turns[j][i]
    if arrayValue == turnCurrently:
错误消息:
回溯(最近一次呼叫最后一次):
文件“D:/a45d32f947055690c690d94f88/TicTacToe”,第183行,在
arrayValue=圈数[j][i]
TypeError:“int”对象不可下标
我的问题本质上是,我想测试
turns[j][I]
是否等于
turns当前
,但我一直遇到这个可订阅问题,我在任何地方都找不到答案,我认为这是一个非常重要的问题。提前感谢,,
Richard

试着用这个来构建一个旋转的二维数组(“矩阵”):

Error Message:
Traceback (most recent call last):
  File "D:/a45d32f947055690c690d94f88/TicTacToe", line 183, in <module>
    arrayValue = turns[j][i]
TypeError: 'int' object is not subscriptable
或者简单地说:

turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
turns.append([1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4])
turns.append([4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4]) 
turns.append([0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21])
turns.append([0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29])
turns.append([0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0])

如您所见,矩阵只不过是列表列表。您首先没有构建矩阵-第一行也必须是一个列表。

更改
顺序=[4,6,2,8,1,9,5,5,3,7,6,8,2,4]

turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4],
         [1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4],
         [4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4],
         [0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21],
         [0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29],
         [0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0]]

你的阵列布局很奇怪。前14个元素是整数,然后是其他两个数组

所以你基本上是这样的:

turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
您可以通过将第一个分配更改为:

[4, 6, 2, ..., 2, 4, [1, 1, 2, ...], [4, 6, ...], ...]

打印变量的内容以查看发生了什么,通常会有很大帮助:

turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
如您所见,该列表的前几个元素是简单的整数,但不是整数列表。因此,当
j
较小时,它将选择一个
int
并尝试在其上应用
[i]
,但失败

这种情况下的解决方案是将第一个元素放入一个额外的列表中:

>>> turns
[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4, [1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4], [0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21], [0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29], [0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0]]
另一种方法是将列表初始化为空列表,并附加第一个子列表:

turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
turns.append( … )

您确定要在此表单中旋转
吗?您在开始时创建一个普通列表,然后向其添加新列表,因此它看起来几乎像2D,但不完全一样。谢谢,这真的很有帮助,它解决了问题,我从来没有想到开始是ints,后面的PAR是列表。非常感谢@用户1434957如果这个答案对您有帮助,请接受它为正确答案(单击其左侧的复选标记)也非常有帮助,这确定了问题。。。谢谢如果你认为答案有用,请投我的一票并接受它
turns = []
turns.append([4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4])
turns.append( … )