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
起作用,但正如前面所述,您可能根本不应该使用它。