Python TypeError:试图更改数组列表的某些元素时,列表索引必须是整数,而不是元组

Python TypeError:试图更改数组列表的某些元素时,列表索引必须是整数,而不是元组,python,arrays,list,typeerror,Python,Arrays,List,Typeerror,我有一个x和y坐标的2×n数组的列表 old: [array([[1, 2, 3], [4, 5, 6]]), array([[10, 20, 30], [40, 50, 60]])] 我试图将y坐标,每个数组的第二行,移动一个特定的值“shift”。但是,当我尝试使用下面的方法执行此操作时,会出现错误: TypeError:试图更改数组列表的某些元素时,列表索引必须是整数,而不是元组 回溯: Traceback (most recent call last): File "<std

我有一个x和y坐标的2×n数组的列表

old: [array([[1, 2, 3], [4, 5, 6]]), array([[10, 20, 30], [40, 50, 60]])]
我试图将y坐标,每个数组的第二行,移动一个特定的值“shift”。但是,当我尝试使用下面的方法执行此操作时,会出现错误:

TypeError:试图更改数组列表的某些元素时,列表索引必须是整数,而不是元组

回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27_32bit\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "C:/Users/tald574/testShifty.py", line 25, in <module>
    new=shiftY(old,shift)
  File "C:/Users/tald574/testShifty.py", line 15, in shiftY
    newItem = array([old[:,0],y])
TypeError: list indices must be integers, not tuple

在列表切片表示法中不需要逗号
array[:,i]
被解析为
array[:t]
,其中
t=,i
是一个元组。有关列表切片的详细信息,请参见

元组是,而不是括号

在您的情况下,请更换管路

y = old[i][1,:] + shift
newItem = array([old[:,0],y])


对,我现在觉得自己很愚蠢

我已经在这方面工作了太长时间,当然我在发布这个问题的15分钟内就找到了答案

我在分配“newitem”时犯了两个错误。 而不是

newItem = array([old[:,0],y])
我应该使用:

newItem = array([old[i][0,:],y])
也就是说,我需要访问列表中的适当项,old[I]而不是old。 我需要访问数组中的适当项old[I][0,:],而不是old[I][:,0]。 新手犯了错误,我希望这对其他人有帮助


编辑,哦,哇,现在才看到所有关于我问题的评论和答案,谢谢各位,我花了这么长时间,因为我把它纳入了我的实际项目,而不仅仅是测试脚本。无论如何,干杯。

看起来,
的位置取代了

将逗号替换为冒号

下面是从列表创建子列表的正确语法

list_name[start_index:end_index]

我认为在以
old.append(arr
开头的行中有一个换行符,它不应该在那里
old[:,0]
是不正确的python语法。那东西的语义是什么?你可能想要
newItem=array(old[I][:,0]),y]
在python中,列表本质上是一个数组(c/c++)这段代码到处都有语法错误。所有这些都需要修改。需要提出正确的问题。两个选项都有效,但都不能解决当前的问题。我同意第二个选项稍微优雅一点,但在我看来,它隐藏了它访问的元素。但这可能只是因为我对Python相当陌生。
newItem = array([old[:,0],y])
newItem = array([old[i][0,:],y])
list_name[start_index:end_index]