我所经历的彼得·诺维格的数独解算器代码(http://norvig.com/sudopy.shtml)和跨越这条线进来:在Python中,为什么这行从文件运行(没有例外),但在shell中运行时抛出异常?
peers = dict((s, set(sum(units[s],[]))-set([s]))
for s in squares)
如果我了复制代码及包括本线(即高达28行),并从运行一个文件,它运行良好,并且字典'peers'具有例外值。但是,如果我运行此文件之后,我尝试运行从shell这条线,我得到一个错误:
peers = dict((s, set(sum(units[s],[]))-set([s]))
for s in squares)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-33-2652de1ecd8a> in <module>()
1 peers = dict((s, set(sum(units[s],[]))-set([s]))
----> 2 for s in squares)
<ipython-input-33-2652de1ecd8a> in <genexpr>((s,))
1 peers = dict((s, set(sum(units[s],[]))-set([s]))
----> 2 for s in squares)
C:\PyCanopy\User\lib\site-packages\numpy\core\fromnumeric.pyc in sum(a, axis, dtype, out, keepdims)
1717 except AttributeError:
1718 return _methods._sum(a, axis=axis, dtype=dtype,
-> 1719 out=out, keepdims=keepdims)
1720 # NOTE: Dropping the keepdims parameters here...
1721 return sum(axis=axis, dtype=dtype, out=out)
C:\PyCanopy\User\lib\site-packages\numpy\core\_methods.pyc in _sum(a, axis, dtype, out, keepdims)
30
31 def _sum(a, axis=None, dtype=None, out=None, keepdims=False):
---> 32 return umr_sum(a, axis, dtype, out, keepdims)
33
34 def _prod(a, axis=None, dtype=None, out=None, keepdims=False):
TypeError: cannot perform reduce with flexible type
我一直没能制定出这是为什么。我发现这行代码很奇怪,因为它的sum
的值超过dict
的值加上空的[]
。任何指导?谢谢。
,我不能与你的主要问题有帮助,但第二ARG Python的内置'sum'功能是初始值,默认情况下是零。通过提供'[]'作为起始参数,它可以让您将列表列表展平为一个列表。例如,sum([[1],[2],[3]],[])'评估为'[1,2,3]'。 –