【问题标题】:Zip in python does not work properly with listspython中的Zip不能与列表一起正常工作
【发布时间】:2018-01-06 14:13:02
【问题描述】:

这是我尝试过的:

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

请让我知道我需要做什么才能同时打印这些值?我在 Windows 10 上使用 Python2.7.13。

【问题讨论】:

    标签: python python-2.7 list numpy zip


    【解决方案1】:

    zip() 不会改变它正在操作的数据的结构,它只是将序列中的每个元素依次放在一起。

    for f, (s, i) in zip(d, f):
       ...
    

    【讨论】:

      【解决方案2】:

      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 但现在对于 bc 只有一项,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:

      如果目标列表是逗号分隔的目标列表:对象 必须是具有与目标相同数量的项目的可迭代对象 在目标列表中,项目从左到右分配给 对应的目标。

      【讨论】:

        【解决方案3】:

        你可以试试列表理解

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

        结果

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

        【讨论】:

          猜你喜欢
          • 2013-06-06
          • 2014-06-23
          • 2018-11-10
          • 2014-07-01
          • 1970-01-01
          • 2016-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多