上述代码仍然报错TypeError: unsupported operand type(s) for *: 'Link' and 'Link',能否只修改deep_map函数
时间: 2024-01-28 19:03:52 浏览: 89
当然可以。我们只需要在 `deep_map` 函数中将递归调用时的第二个参数改为 `deep_map(f, link.rest)`,即可保证在递归调用时,传递的参数都是链表类型。
下面是修改后的 `deep_map` 函数的代码:
```python
def deep_map(f, link):
if link.rest is Link.empty:
return Link(f(link.first))
else:
return Link(f(link.first), deep_map(f, link.rest))
```
现在再运行 `deep_map` 函数,就不会报错了。
相关问题
可是他报错:TypeError: unsupported operand type(s) for -=: 'str' and 'str'
抱歉,我之前给出的回答是错误的。根据报错信息来看,你不能对字符串类型的变量减法操作符。
如果你想从 'progress_bar_space' 变量中移除一个空格,可以使用字符串的替换方法(replace)来实现。下面是一个示例代码:
progress_bar_space = progress_bar_space.replace(' ', '')
这将从 'progress_bar_space' 变量中移除一个空格字符。请注意,这将替换所有的空格字符,而不仅仅是第一个空格字符。如果你只想替换第一个空格字符,可以使用字符串的 find 方法找到第一个空格的索引,然后再进行替换。以下是一个示例代码:
index = progress_bar_space.find(' ')
progress_bar_space = progress_bar_space[:index] + progress_bar_space[index+1:]
这将从 'progress_bar_space' 变量中移除第一个空格字符,保留其他字符不变。
sp1obj = sum((pi[i]*bnewplan1[q][i] for q in range(m))for i in range(numpatient)) 报错 TypeError: unsupported operand type(s) for +: 'int' and 'generator'怎么皆解决
这个错误是因为你正在尝试将一个生成器对象与整数相加,这是不支持的操作。
要解决这个问题,你可以使用 `sum()` 函数对生成器进行求和,并将其结果赋值给一个变量,然后再将该变量与整数相加。
以下是修改后的代码示例:
```python
expr = sum(pi[i]*bnewplan1[q][i] for q in range(m) for i in range(numpatient))
sp1obj = expr + your_integer_value
```
在这个示例中,我们首先使用 `sum()` 函数对生成器求和并将结果赋值给变量 `expr`,然后将 `expr` 与整数相加并赋值给 `sp1obj`。
请确保在使用生成器对象之前正确导入所需的模块,并将 `your_integer_value` 替换为你想要相加的整数值。
阅读全文