【问题标题】:Why does this nested list comprehension generate an error?为什么这个嵌套列表推导会产生错误?
【发布时间】:2011-07-31 13:38:15
【问题描述】:
conn_request, weights = zip(*[
    ((conn, request), request[2])
    for conn in unchoked_conns
    for request in conn.peer_requests
])

生成:

    for conn in unchoked_conns
ValueError: need more than 0 values to unpack

我无法弄清楚我做错了什么。我认为这与requestconn 的依赖有关?

【问题讨论】:

    标签: python zip python-3.x list-comprehension


    【解决方案1】:
    >>> a, b = zip(*[])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: need more than 0 values to unpack
    

    您的信用证生成一个空列表。尝试验证 unchoked_conns 是否有任何元素。

    【讨论】:

    • 这一定是一个错误或疏忽。除了空列表之外的所有情况都可以正常工作。
    【解决方案2】:

    压缩一个空列表会返回一个空列表,因此分配失败。这与 zip 帮助一致,其中明确表示:

    The returned list is truncated in length to the length of the shortest argument sequence
    

    在您的情况下,最短的参数序列的长度为 0。

    【讨论】:

      猜你喜欢
      • 2012-08-09
      • 2015-03-14
      • 2018-03-17
      • 1970-01-01
      • 2021-09-18
      • 2016-11-19
      • 2018-04-19
      • 1970-01-01
      • 2011-01-27
      相关资源
      最近更新 更多