列出超出范围的悖论

时间:2015-09-22 07:59:17

标签: python

出于某种原因,我陷入了一个简单的逻辑python中。在C ++中,这将更容易

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))

2 个答案:

答案 0 :(得分:2)

for index,value in lamb将无法正常工作,因为它会尝试从index,value等要求2元组的浮点数中解包0.2。您将收到相同的错误(不是您发布的错误):

for item in lamb:
    index,value = item

你想要的是:

for index,value in enumerate(lamb):

为了明确发生了什么,请在循环之前插入并查看输出:

print list(enumerate(lamb))

有关详细信息,请查找元组解包和枚举。

编辑:我现在注意到你似乎不想要实际的索引,而是想要x中的匹配值(再多1个),在这种情况下用zip替换set serveroutput on; declare v number; begin begin v := 1/0; exception when others then dbms_output.put_line('I catch exception;'); goto my_label; end; dbms_output.put_line('Something here'); <<my_label>> dbms_output.put_line('After label'); end; 列举这个答案。

答案 1 :(得分:0)

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))