【问题标题】:whats wrong with this code in pythonpython中的这段代码有什么问题
【发布时间】:2018-08-23 04:25:25
【问题描述】:

嗨,我想弄清楚为什么这不起作用

def fun():
   a = [1,4]
   b = [2,5]
   c = [3,6]
   return a,b,c

我想打印abc,但调用print(x)print(y)print(z)

for x,y,z in fun():
   print(x)

我唯一得到的是

ValueError: 没有足够的值来解包(预期 3,得到 2)

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以这样做:

    def fun():
       a = [1,4]
       b = [2,5]
       c = [3,6]
       return a,b,c
    
    for item in fun():
        print(item)
    

    或者:

    x,y,z = fun()
    print(x)
    

    你不能像现在这样遍历函数的返回值。

    编辑:

    做的问题

    for x,y,z in fun():
    

    fun() 等于([1,4], [2,5], [3,6])。这意味着当您遍历该元组时没有 z 值。所以如果你想这样做,你可以这样做:

    for x,y in fun():
       print(x,y)
    

    虽然您不会打印列表,而是遍历列表中的每个项目并打印项目。

    编辑信用:Jeremy 的评论。

    【讨论】:

    • 实际上对于 fun() 中的 x,y: print(x, y) 对我有用。部分问题在于返回的是一组 3 对,而不是两个三元组。
    • 哦,有趣,我没有这样想过。所以看起来这样做只是将 fun() 替换为 ([1,4], [2,5], [3,6]) 并迭代该元组然后?
    • 是的,我想是的。感谢您在编辑中大声疾呼。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2018-09-09
    相关资源
    最近更新 更多