代码之家  ›  专栏  ›  技术社区  ›  Jaffer Wilson Dilip kumar

python中的Zip不能正确处理列表

  •  3
  • Jaffer Wilson Dilip kumar  · 技术社区  · 8 年前

    >>> d
    array([ 0.71428573,  0.69230771,  0.69999999], dtype=float32)
    >>> f
    [('name', 999), ('ddd', 33), ('mm', 112)]
    >>> for n1,s1,normal in zip(d,f):
    ...     print(n1,s1,normal)
    ...
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: need more than 2 values to unpack
    

    然后我试了一下:

    >>> for (name,confidence),normal in zip(d,f):
    ...     print(name,confidence,normal)
    ...
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'numpy.float32' object is not iterable
    

    哪里

    d = ['Jonathan Walsh','Patrick Walsh','John Welsh']
    array = np.array(d)
    from pyxdameraulevenshtein import damerau_levenshtein_distance_ndarray, normalized_damerau_levenshtein_distance_ndarray
     d = normalized_damerau_levenshtein_distance_ndarray('jwalsh', array)
    

    3 回复  |  直到 8 年前
        1
  •  8
  •   Ashwini Chaudhary    8 年前

    f

    >>> for n1, (s1, normal) in zip(d, f):
    ...     print(n1, s1, normal)
    ...
    (0.71428573, 'name', 999)
    (0.69230771, 'ddd', 33)
    (0.69999999, 'mm', 112)
    

    >>> a, (b, c) = [1, (2, 3)]
    >>> a, b, c
    (1, 2, 3)
    

    而这将失败,因为 a 可以分配给 1 b c 只有一个条目,Python抱怨在RHS的列表中还需要一个条目,或者我们在LHS上使用相同的结构。

    >>> a, b, c = [1, (2, 3)]
    Traceback (most recent call last):
      File "<ipython-input-9-c8a9ecc8f325>", line 1, in <module>
        a, b, c = [1, (2, 3)]
    ValueError: need more than 2 values to unpack
    

    从…起 docs:

    必须是一个iterable,其项数与目标数相同 在目标列表中,项目从左到右分配给

        2
  •  3
  •   Ignacio Vazquez-Abrams    8 年前

    zip()

    for f, (s, i) in zip(d, f):
       ...
    
        3
  •  1
  •   MishaVacic    8 年前

    [[c, a] for c, a in zip(d,f)]
    

    后果

    [[0.71428573, ('name', 999)], [0.69230771, ('ddd', 33)], [0.69999999, ('mm', 112)]]