Python TypeError:无法使用灵活类型(字符串列表)执行reduce
我有一个列表Python TypeError:无法使用灵活类型(字符串列表)执行reduce,python,Python,我有一个列表r和一个列表l r = get_r() l = [['a', 'b'], ['a'], ['c']] print('-') [print(type(el)) for el in l]; print('-') [print(type(el)) for el in r]; print(l) print(r) 会给我们 - <class 'list'> <class 'list'> <class 'list'> - <class 'list'
r
和一个列表l
r = get_r()
l = [['a', 'b'], ['a'], ['c']]
print('-')
[print(type(el)) for el in l];
print('-')
[print(type(el)) for el in r];
print(l)
print(r)
会给我们
-
<class 'list'>
<class 'list'>
<class 'list'>
-
<class 'list'>
<class 'list'>
<class 'list'>
[['a', 'b'], ['a'], ['c']]
[['Schadenersatzrecht'], ['Abgabenrecht, Finanzrecht und Steuerrecht; Verfahrensrecht'], ['Europarecht']]
会给我们
-
<class 'list'>
<class 'list'>
<class 'list'>
-
<class 'list'>
<class 'list'>
<class 'list'>
[['a', 'b'], ['a'], ['c']]
[['Schadenersatzrecht'], ['Abgabenrecht, Finanzrecht und Steuerrecht; Verfahrensrecht'], ['Europarecht']]
但现在,当我np.sum
列出这些:
np.sum(l)
np.sum(r)
我得到:
['a', 'b', 'a', 'c']
而且:
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1 np.和(r)
~/miniconda3/lib/python3.6/site-packages/numpy/core/fromnumeric.py in sum(a,axis,dtype,out,keepdims)
1832返回和(axis=axis,dtype=dtype,out=out,**kwargs)
1833返回方法。求和(a,axis=axis,dtype=dtype,
->1834 out=out,**kwargs)
1835
1836
~/miniconda3/lib/python3.6/site-packages/numpy/core//u methods.py in\u sum(a、axis、dtype、out、keepdims)
30
31定义和(a,轴=无,数据类型=无,输出=无,keepdims=假):
--->32返回umr_和(a、轴、数据类型、输出、保留)
33
34 def_prod(a,axis=None,dtype=None,out=None,keepdims=False):
TypeError:无法使用灵活类型执行reduce
我完全不明白问题是什么。甚至在那些列表中的元素列表中打印类型[print(type(el[0]),用于el-in-r]代码>将给我
作为结果。这些类型是相同的-至少从我所知道的np.sum
对r
不起作用
我不确定你是否能从这里看到的情况中看出问题所在。另外,我能提供的唯一信息是,r
来自一个解析过的JSON——但是,我不明白为什么这会影响结果。使用np.sum
来平展列表是个坏主意。在执行np.sum
之前,两个列表都被强制为具有不同数据类型的np数组类型(尽管这只是故障原因的一部分)
您通常不想为此使用np.sum
使用列表理解,简单地用Pythonic方式展平列表:
l = [x for lst in l for x in lst]
r = [x for lst in r for x in lst]
如果将l
更改为l=['a']、['a']、['c']
(每个子列表一个对象),就像对r
一样,您会得到相同的行为。你想做什么?为什么不join()。这也会使np.sum
起作用,但正如前面所述,您可能根本不应该使用它。