python - 如何修复错误?TypeError: 不支持的操作数类型 -: 'tuple' 和 'int'
问题描述
我有一个任务:给定一个数组 a0, a1,…, an − 1。对于每个元素,找到从它到最近零的距离。保证零在数组中至少出现一次。
输入数据 输入的第一行包含一个整数 n (1≤n≤2⋅105) - 数组 a 的长度。第二行包含数组的元素,以空格分隔(-109≤ai≤109)。
输出 打印序列 d0, d1,…, dn − 1。di 值必须等于从位置 i 的元素到最近的零元素的距离。
这是我的解决方案:
n=int(input())
a=list(map(int, input().split()))
b = [i for i in range(len(a)) if a[i] == 0]
print(*[min(abs(i - j) for j in b) for i in enumerate(a)])
但是我收到错误 TypeError: unsupported operand type(s) for -: 'tuple' and 'int'。我怎么解决这个问题?怎么写不一样?
解决方案
该函数enumerate
返回一个导致TypeError
. 您可以只保留一个占位符变量将元组分成 i 和另一个占位符变量,如下所示:
print(*[min(abs(i - j) for j in b) for i,_ in enumerate(a)])
或者,根本不使用enumerate
。
print(*[min(abs(i - j) for j in b) for i in range(n)])
推荐阅读
- react-native - 无法从 `node_modules\@jest\console\build\BufferedConsole.js` 解析模块 `assert`:在项目中找不到断言
- jquery - ColdFusion Uncaught SyntaxError:无效或意外的标记 jQuery
- javascript - 如何检查两位数数组是否与对象数组的某个部分相同?
- openssl - 如何使用 openssl 生成证书
- dialogflow-es - 错误的意图正在触发对话流中不适当的用户输入
- python - 如何通过 Python 创建表在 sqlite3 中显示表
- typescript - Firebase:在这种情况下,我每次发布内容时都需要发送 uid 吗?
- c - C - 如何通过函数增加指向字符串的指针?
- c# - ASP.NET Webservice-SessionState 不超时
- flutter - Flutter Wrap 溢出的文本