为什么这个嵌套列表理解会产生错误?

时间:2011-07-31 13:38:16

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

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的依赖性有一些影响吗?

2 个答案:

答案 0 :(得分:4)

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

您的LC生成一个空列表。请尝试验证unchoked_conns是否包含任何元素。

答案 1 :(得分:0)

压缩空列表会返回单个空列表,因此分配失败。这与zip帮助一致,它清楚地说:

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

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