Python 列表超出范围悖论
出于某种原因,我被困在一个简单的逻辑python中。在C++中,这将更容易< < /p>Python 列表超出范围悖论,python,Python,出于某种原因,我被困在一个简单的逻辑python中。在C++中,这将更容易< < /p> if __name__ == "__main__": n = 100 x = [1,2,3,4] lamb = [0.2, 0.5, 0.7, 0.8] y = [] for index,value in lamb: y.append(index,value,n) 当我使用下面相同的逻辑执行上面的代码时,它在列表范围外被拒绝,代码似乎正常工作 Pyt
if __name__ == "__main__":
n = 100
x = [1,2,3,4]
lamb = [0.2, 0.5, 0.7, 0.8]
y = []
for index,value in lamb:
y.append(index,value,n)
当我使用下面相同的逻辑执行上面的代码时,它在列表范围外被拒绝,代码似乎正常工作
Python有什么不同
y.append(meanwait(x[0], lamb[0], n))
y.append(meanwait(x[1], lamb[1], n))
y.append(meanwait(x[2], lamb[2], n))
y.append(meanwait(x[3], lamb[3], n))
zip函数可能对您有所帮助
def meanwait(a,b,c):
# I don't know the behavior
return 0
if __name__ == "__main__":
n = 100
x = [1,2,3,4]
lamb = [0.2, 0.5, 0.7, 0.8]
y = []
for (index,value) in zip(x,lamb):
y.append(meanwait(index,value,n))
对于索引,lamb中的值将不起作用,因为它试图从浮点值(如0.2)中解包索引值,而在浮点值中它需要一个2元组。您将收到与您发布的错误不同的错误:
for item in lamb:
index,value = item
你想要的是:
for index,value in enumerate(lamb):
为了弄清楚发生了什么,在循环之前插入这个,并查看输出:
print list(enumerate(lamb))
有关更多信息,请查阅元组解包和枚举
编辑:我注意到现在您似乎不想要实际的索引,而是想要x中的匹配值,即多1,在这种情况下,在这个答案中用enumerate替换zip。这两个代码示例并不相同。我得到的错误不是超出范围,而是TypeError:“float”对象不是Iterable我认为您想要的是索引,在LAMBHOW中的值是与C++相关的吗?追加正好有一个参数。谢谢!谢谢你的帮助!