python - 尝试在列表中添加整数时出现连续类型错误?
问题描述
好的。在这个问题上遇到这么多麻烦我觉得有点傻,但基本上,这是我到目前为止的代码:
def addition_nest(x):
netsum = 0
sublist = []
if isinstance(x, int):
return x
if isinstance(x, list):
for sublist in x:
if sublist == []:
return netsum
else:
netsum = netsum + addition_nest(sublist)
return netsum
我不断收到错误消息,说操作数 + 不适用于 int 和 NoneTypes。关于如何绕过这个的任何想法?代码基本上需要能够将列表/嵌套列表中的所有整数相加,并省略列表中的任何其他元素。
解决方案
此代码将为您提供预期的输出。
def addition_nest(x):
netsum = 0
if isinstance(x, int):
# if isinstance(x, (int, float)):
return x
elif isinstance(x, list):
for each_element in x:
if isinstance(each_element, int):
# if isinstance(each_element, (int, float)):
netsum += each_element
elif isinstance(each_element, list):
netsum += addition_nest(each_element)
return netsum
print(addition_nest(25)) ## Output: 25
print(addition_nest([25, 30, 'a'])) ## Output: 55
print(addition_nest([25, 30, ['a', 10, 20]])) ## Output: 85
如果您还希望上面的代码float
也可以使用,请将 if 条件替换为注释行。
在您现有的代码中,您已经处理了当父列表中的元素是另一个列表或整数时的场景。但是您没有为其他数据类型处理它。这就是您面临错误的原因。
推荐阅读
- c++ - lzma totalread 比标头未压缩大小大 1
- python - 是否可以使用 getattr 和字典键(Python 2.7,Tkinter)通过动态名称调用设置按钮状态?
- python - 在 pandas 数据帧上应用 Savitzky-Golay 过滤器
- arrays - 如何比较从 API 获得的 JSON 数组与 CSV 文件中存在的普通 Java 数组?
- php - 循环查找相隔几秒的几乎匹配的文件名
- sql-server - 在 SQL Server 中恢复具有特定登录权限的数据库
- php - 如何定位数组值 - php xml
- java - 资源颜色android的返回类型?
- office365 - Office 365 加载项侧边栏/任务窗格的名称
- c++ - [Boost::ext].SML:在操作中访问 SM 和依赖项