Python TypeError:试图更改数组列表的某些元素时,列表索引必须是整数,而不是元组
我有一个x和y坐标的2×n数组的列表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
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]