我通过命令行提供了两个值(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(一个索引)是一个元组。请帮忙。
答案 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]
此处将元组解压缩到idx
和value
,我们使用idx
来跟踪for
循环中可能出现的逻辑。
value
将包含idx
的索引位置myArray[idx]
的值
答案 1 :(得分:1)
tuple
为idx
,而不是start_point
。这一行:
for idx in enumerate(myArray):
将一个元组对象指定给idx
。 enumerate
函数生成一个格式为元组的元组:
(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]
。