Python TypeError:只能将元组(不是“int”)连接到元组

时间:2015-06-09 13:44:20

标签: python python-2.7 python-3.x

我通过命令行提供了两个值(mon_voltage和core_voltage),我需要从迭代或循环开始的二维数组中搜索“起始点”。

这是我的代码:

myArray =  [[1.02,1.13],[1.02,1.16],[1.02,1.18],[1.02,1.21],[1.02,1.265]]

start_point = myArray.index([mon_voltage, core_voltage])
print "Start point is", start_point

for idx in enumerate(myArray):

     mon_voltage = myArray[idx + start_point][0]
     core_voltage = myArray[idx + start_point][1]

我收到以下错误:

  TypeError: can only concatenate tuple (not "int") to tuple

我无法弄清楚为什么start_point(一个索引)是一个元组。请帮忙。

5 个答案:

答案 0 :(得分:6)

enumerate()将返回(index, value)元组。

您可以将索引值作为

进行访问
idx[0]

示例

for idx in enumerate(myArray):    
       mon_voltage = myArray[idx[0] + start_point][0]
       core_voltage = myArray[idx[0] + start_point][1]

for (idx, value) in enumerate(myArray):    
           mon_voltage = myArray[idx + start_point][0]
           core_voltage = myArray[idx + start_point][1]

此处将元组解压缩到idxvalue,我们使用idx来跟踪for循环中可能出现的逻辑。

value将包含idx的索引位置myArray[idx]的值

答案 1 :(得分:1)

tupleidx,而不是start_point。这一行:

for idx in enumerate(myArray):

将一个元组对象指定给idxenumerate函数生成一个格式为元组的元组:

(index_number, value)

您可能想要做的只是:

for idx, value in enumerate(myArray):

忽略value部分。

答案 2 :(得分:1)

idx是一个元组,而start_point不是

内置函数enumerate返回一个迭代器,其next将返回包含计数的元组和从序列中获取的值

在你的情况下,返回元组

In [5]: list(enumerate(myArray))
Out[5]:
[(0, [1.02, 1.13]),
 (1, [1.02, 1.16]),
 (2, [1.02, 1.18]),
 (3, [1.02, 1.21]),
 (4, [1.02, 1.265])]

答案 3 :(得分:1)

Start_point不是元组; idx是。如果您print(idx),则会看到enumerate()方法的输出:

(0, [1.02, 1.13])
(1, [1.02, 1.16])
(2, [1.02, 1.18])
(3, [1.02, 1.21])
(4, [1.02, 1.265]) 

这些都是元组,由索引和值组成。

答案 4 :(得分:0)

idx确实是一个元组,因为enumerate()返回一个元组。 如果要提取真实索引,请尝试idx[0]